...
- What is the default character encoding of the request or response body?
- How do I change how GET parameters are interpreted?
- How do I change how POST parameters are interpreted?
- How can I test if my configuration will work correctly?
- How can I send higher characters in HTTP headers?
- What can you recommend to just make everything work? – How to use UTF-8 everywhere.
- Why does everything have to be this way?
- I'm having a problem with character encoding in Tomcat 5
...
POST requests should specify the encoding of the parameters and values they send. Since many clients fail to set an explicit encoding, the default is used (ISO-8859-1). In many cases this is not the preferred interpretation so one can employ a javax.servlet.Filter to set request encodings. Writing such a filter is trivial. Furthermore Tomcat already comes with such an example filter. Please take a look at:
4.x::
...
5.x::
No Format |
---|
webapps/servlets-examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java webapps/jsp-examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java |
...
Anchor | ||||
---|---|---|---|---|
|
Using UTF-8
as your character encoding for everything is a safe bet. This should work for pretty much every situation.
In order to completely switch to using UTF-8, you need to make the following changes:
- Set
URIEncoding="UTF-8"
on your <Connector> inserver.xml
. References: HTTP Connector, AJP Connector. - Use a character encoding filter with the default encoding set to UTF-8
- Change all your JSPs to set the correct
Content-Type
(include charset name in their contentType. For example, use<%@page contentType="mimetext/typehtml; charset=UTF-8" %>
for the usual JSP pages and<jsp:directive.page contentType="text/html; charset=UTF-8" />
for the pages in XML syntax (aka JSP Documents). - Change all your servlets to set the content type for responses and to include charset name in the content type to be UTF-8. Use
response.setContentType("text/html; charset=UTF-8")
orresponse.setCharacterEncoding("UTF-8")
. - Change any content-generation libraries you use (Velocity, Freemarker, etc.) to use UTF-8 and to specify UTF-8 as in the content type of the responses that they generate.
- Disable any valves or filters that may read request parameters before your character encoding filter or jsp page has a chance to set the encoding to UTF-8. For more information see http://www.mail-archive.com/users@tomcat.apache.org/msg21117.html.
...