In tomcat 5.0 and above, if your UTF-8 request parameters are received as gibberish you might need to do the following:
In your
server.xml
add the
URIEncoding="UTF-8"
and
useBodyEncodingForURI="true"
to the
Connector
tag(s):
<Connector
useBodyEncodingForURI="true"
URIEncoding="UTF-8"
acceptCount="100"
enableLookups="false"
maxSpareThreads="75"
maxThreads="150"
minSpareThreads="25"
port="8080"
redirectPort="8443" />
This should make
GET
requests work properly.
For some reason the above does not work for
POST
requests. If you ask the tomcat people they'll mumble something about W3C, RFC, and RTFM. The short way to have this work for
POST
requests is to write a small filter to set the request encoding properly. We are using something similar to this:
package com.realcommerce.filters;
import javax.servlet.*;
import java.io.*;
public class RequestEncodingFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
//Do Nothing
}
public void destroy() {
//Do Nothing
}
public void doFilter(ServletRequest request,ServletResponse response,
FilterChain chain) throws IOException, ServletException
{
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
}
This made
POST
requests pass Hebrew (or any UTF-8) parameters properly.