本来解决 Tomcat 中文乱码很久了,但是今天重装了一下Tomcat,忘记配置了,结果用URL get方式传递的中文参数出现了乱码,这里就再提一下不用filter,直接修改Tomcat配置文件的解决方法:

Tomcat5+已经把get和post分开处理了,其设置编码方式也有所不同。
根据 http://tomcat.apache.org/tomcat-5.5-doc/config/http.html 得需要设置URIEncoding & useBodyEncodingForURI,否则默认编码方式为"ISO-8859-1"

这里以Tomcat 5.0 为例,其他版本的类似,修改  conf/server.xml :

<Connector port="8080"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />

红色部分为新增,URIEncoding 可以改为 gbk 或者 gb2312,但是建议还是使用UTF-8!最好就是从代码到应用全都utf-8!

另外,jsp页面也需要声明编码:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

偶尔还出现乱码的,可以试试补上:
<%request.setCharacterEncoding("utf-8");%>

相关文章:
Tomcat+MySql+Struts中文问题绝妙的解决方案
http://www.javawind.net/5b016f381a690317011a759915990005.jhtml#141