I have a demo web application that creates users. When I try to insert data in other languages (like french) the characters are not encoded correctly. The code on the contr
Try making CharacterEncodingFilter the first filter in web.xml.
I realize this question is a little old, but I just ran into the same problem, and moving CharacterEncodingFilter fixed it for me.
There are two things to help:
setenv.sh
file add JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=utf-8"
export LANG='utf-8'
This can then be tested by examining the default character set: Charset.defaultCharset()
.
You need to add accept-charset="UTF-8" to your form.
Perhaps I'm missing something, but if the page-encoding in your JSP is "UTF-8", shouldn't the encoding in your CharacterEncodingFilter be UTF-8 rather than ISO-8859-7?
Output of System.out.println()
depends on console encoding, so it's not a good way to debug encoding problems.
To check that your values are decoded properly, you should show it at another page. Actually, it's already done in the case of form validation failure, so your system works fine if values in the fields remains the same after validation error.
If this still does not work and you're using Tomcat as your application server try to set the following option on every <Connector>
element in the server.xml
:
<Connector URIEncoding="UTF-8" ...>
...
</Connector>
This did the trick for me. There might be similar options for other application servers, so you might want to check the server documentation.