主要是因为tomcat默认的服务器端编码是ISO-8859-1,因此用户请求服务器时,常出现乱码
1.get请求方式中文乱码解决
解决方案:
① 修改tomcat默认的编码方式为"UTF-8"
② 分别对请求行的汉字进行编码和解码
1)修改配置文件
在tomcat的server.xml里把
<Connector connectionTimeout="50000" port="8080" protocol="HTTP/1.1"
redirectPort="8443"/>
修改为
<Connector connectionTimeout="50000" port="8080" protocol="HTTP/1.1"
redirectPort="8443" URIEncoding="UTF-8"/>
2)对请求行进行编解码
例如来自页面的一个get请求:
window.location.href = getContextPath()+"/manage/user/detail?name="+
encodeURI(encodeURI("小明"));
服务端:
String name = request.getParameter("name");
orgname = URLDecoder.decode(name,"UTF-8");
通过encodeURI进行编码,通过URLDecoder的decode方法进行解码
2.post请求方式中文乱码解决
方案1:
request.setCharacterEncoding("UTF-8");
方案2:(配置字符过滤器)
<filter>
<description>字符集过滤器</description>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<description>字符集编码</description>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>