一、问题
Java开发当中,经常遇到中文乱码问题,一般分为GET请求中文乱码、POST请求中文乱码、JSP页面中文乱码。
二、解决办法
2.1 POST请求中文乱码
这个情况,解决办法最简单,在WEB-INF/web.xml中配置utf-8编码过滤器
<!-- 配置post请求编码过滤器,统一设置为utf-8 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.2 GET请求中文乱码
Tomcat/conf/server.xml中添加URIEncoding="UTF-8"
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
如果上述2种方法都没有配置,也可以直接在java代码当中实现中文参数的编码格式转换,这里有一段给大家贴一段代码
String name=request.getParameter("name");
name=new String(name.getBytes("iso8859-1"),"utf-8");
PS:Java代码说明
1.默认所有的GET请求先去采用Tomat配置的编码格式;
2.Tomcat没有配置编码格式,则默认是iso8859-1编码格式,这时候后台程序代码才需要通过以上Java代码转换参数编码格式为utf-8;
3.Tomcat已经配置utf-8编码格式,就不需要再进行转码了。重复UTF-8转UTF-8,也会造成乱码。
4.此段代码学习,可参考这位同志的博文了解了解 http://blog.csdn.net/xingshen100/article/details/13614009
2.3 JSP界面中文乱码
只需要在每一个jsp文件开头,添加以下代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>