Apache与Tomcat整合时中文参数乱码的解决

把Apache2.2与Tomcat6进行整合之后,当提交带有中文参数的请求时,经常出现奇怪的现象。在直接访问Tomcat时,可以正常返回结果的请求,一旦经过Apache的代理,就出现问题。

通过Debug发现,Tomcat在经过和不经过Apache代理的两种情况下,得到的中文参数是不同的,而后者是乱码。

从网上查了一下资料,发现Apache在使用AJP13模式代理到Tomcat时,也应该为Tomcat的AJP13设定一些参数。

具体说来,应该在Tomcat的server.xml中设置为:

<Connector port=”8085″ protocol=”HTTP/1.1″ connectionTimeout=”20000″ redirectPort=”8443″
<!– 防止中文乱码 –>
useBodyEncodingForURI=”true” URIEncoding=”UTF8″ />

<Connector port=”8009″ protocol=”AJP/1.3″ redirectPort=”8443″
<!– 防止中文乱码 –>
useBodyEncodingForURI=”true” URIEncoding=”UTF8″ />