Hello,


Thank you for you quick reply.



Sorry if I was a bit unclear: I am posting via a form, in a JSP page, some
information that at a later stage is stored in my DB. When I use åäöÅÄÖ it is 
messed up to ??????-signs when
extracting it on the server side before trying to save it in the db.

I didn't try to use ISO-8859-1 at first, but when UTF-8 didn't work I changed. 
I assume that why it didn't work was because of the bug and the configurations 
you mentioned below (server.xml config). I'll try tomorrow. 

What is the purpose of using ISO-8859-1 when it seems like UTF-8 works for all 
languages then? Or am I mistaken there? I have myself in the past (way back) 
used Big5 and Gb1251 (think it was) coding Chinese applications using Java. 


Don't know what happened to my e-mail I sent out, it's totally
corrupted I can see now, a lot of information is missing (at least in
my web-client...). But I think your answer helps me so I skip completing
that missing information now.

Thanks again!

Regards,
Niklas


----------------------------------------
> Date: Sun, 26 Apr 2009 21:52:23 +0200
> From: voetsjo...@gmail.com
> To: user@struts.apache.org
> Subject: Re: Struts and encoding ISO-8859-1
>
> What exactly is giving you trouble? Are your HTTP parameters not
> properly received? Does your DB data get garbled when you output it?
> I've recently had problems with ISO-8859-1 and Struts 2 as well, and
> there are some things you need to be aware of.
>
> It turns out that by default Tomcat uses ISO-8859-1 exclusively for
> decoding URI parameters, but only for the URI parameters. This can lead
> to bizarre situations such as POST request parameters getting received
> perfectly in UTF-8, but GET request parameters getting garbled into
> ISO-8859-1. Now, the filter you wrote makes sense and I have found many
> similar solutions when researching this issue myself, and Struts 2
> actually already does this for you (check out the Dispatcher.prepare
> method). The problem, however, is that setCharacterEncoding does not
> affect the decoding of the URI parameters; at least not when your Tomcat
> instance in Eclipse is set to its default configuration.
>
> The solution is to either explicitly tell Tomcat which URI encoding to
> use, or to tell it to use the same encoding as the request body. This
> last option makes it so that it will use the encoding set by
> setCharacterEncoding for decoding the URI (which is what you'll want).
> You can do this by editing your tomcat's server.xml and adding the
> attribute useBodyEncodingForURI="true" to your HTTP/1.1 Connector entry.
> It would look like this:
>
> 
> redirectPort="8443" useBodyEncodingForURI="true" />
>
> Also, don't forget to manually publish to Tomcat for these changes to
> take effect; for some reason it doesn't seem to pick up on the changes
> unless you manually publish to Tomcat (or maybe I'm just impatient).
>
> You're not out of the woods yet, however. There is also a bug in Struts
> 2.1.6's filters (eg. StrutsPrepareAndExecuteFilter) which causes the
> call to setCharacterEncoding to be performed after the request map and
> all the parameters have already been read, so that the call to
> setCharacterEncoding become pretty much useless (see
> https://issues.apache.org/struts/browse/WW-3075). This issue has been
> fixed in Struts 2.1.7, so you can either stick with your current extra
> Filter (which should also work fine, provided that useBodyEncodingForURI
> is activated and that it comes before the struts filter) or go with a
> 2.1.7 snapshot. From what I can tell from the dev mailing list it's
> pretty close to release, so you shouldn't have too many issues with it.
> It uses xwork 2.1.3 as well, which was released recently and fixes at
> least one important localization issue
> (https://issues.apache.org/struts/browse/WW-2176), which might actually
> very well be related to your problem.
>
> Finally, make sure to set a charset in your HTTP Content-type response
> header, like so:
>
> Content-type: text/html; charset=iso-8859-1.
>
> If you're using JSPs, for example, this is done using the page directive:
>
> 
>
> You can also set the same in a  directive if you want, but all
> modern browsers use the value from the response header rather than the
>  tag. More importantly, they will also send form data in the same
> encoding used by the page the data is sent from. In short, if you send a
> page with a form in it as ISO-8859-1 and the user submits the form,
> their browser will send you the data as ISO-8859-1.
>
> Having said all the above, I don't see a reason to go with ISO-8859-1
> over UTF-8. Either way, I hope this helps you solve your issue. FYI, I
> have UTF-8 fully working here using xwork 2.1.3 and a struts 2.1.7
> snapshot. Should you decide to switch to UTF-8, I'll be happy to answer
> your questions.
>
> Cheers,
> Jeroen
>> Hello,
>>
>> Using Struts 2.1.6
>> Tomcat 6
>> Java 1.6
>> Eclipse Ganymede
>>
>> I am trying to get my first Struts2 application working. Everything works 
>> fine except the encoding part. Swede as I am I want to use åäöÅÄÖ, i.e. 
>> ISO-8859-1, but it doesn't work.
>>
>> I have searched the net and tried various things, but I think this is 
>> pointing in the correct direction so I did as explained (but that person 
>> used UTF-8 instead):
>>
>> I created following file:
>>
>> public class EncodingFilter implements Filter{
>>
>> private String encoding = "ISO-8859-1";
>>
>> @Override
>> public void destroy() {
>>
>> }
>>
>> @Override
>> public void doFilter(ServletRequest request, ServletResponse response,
>> FilterChain filterChain) throws IOException, ServletException {
>>
>> request.setCharacterEncoding(encoding);
>> response.setCharacterEncoding(encoding);
>> filterChain.doFilter(request, response);
>> }
>>
>> @Override
>> public void init(FilterConfig filterConfig) throws ServletException {
>> // TODO Auto-generated method stub
>> String encodingParam = filterConfig.getInitParameter("encoding");
>> if (encodingParam != null) {
>> encoding = encodingParam;
>> }
>>
>>
>> }
>> }
>>
>> My JSP files has this
>>
>>
>>
>> and this
>>
>>
>>
>> I added following part to web.xml
>>
>>
>> EncodingFilter
>> org.nicsoft.utilities.EncodingFilter
>>
>> encoding
>> ISO-8859-1
>>
>>
>>
>> EncodingFilter
>> /*
>>
>>
>> I assume I don't have to do anything else in order to get it working with 
>> doFiler, the application server automatically request the doFilter, correct?
>>
>> I am also using Hibernate for storing data that I post from the form in 
>> MySQL. However, I am quite sure that Hiberante has nothing to do with the 
>> problem because I am doing I am writing the parameters to the console before 
>> Hibernate hooks in.
>>
>> Can anyone help out, I have no idea how to proceed. I couldn't find any good 
>> how-to for this problem or posts on any forum. The best was the one I 
>> explained above.
>>
>> Thank you in advance!
>>
>> Best Regards,
>> Niklas
>>
>> _________________________________________________________________
>> More than messages–check out the rest of the Windows Live™.
>> http://www.microsoft.com/windows/windowslive/
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
>> For additional commands, e-mail: user-h...@struts.apache.org
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
>

_________________________________________________________________
Invite your mail contacts to join your friends list with Windows Live Spaces. 
It's easy!
http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to