Java处理乱码

***Jsp页面解决中文乱码***

***Jsp页面产生中文乱码分多种情况,下面对各种情况进行说明并解决:

1、post:
发送请求的页面在表单中的method是post,post请求的请求参数包含非西欧字符的话,则必须在接受页面获取请求参数之前调用setCharactorEncoding()方法设置字符集。
例如,请求页面采用gb2312字符集,接受页面要先执行如下方法:setCharactorEncoding("gb2312");

2、get:
如果是get方法,以上设置不起作用,需要进行如下设置:
String name=request.getParameter("username");
Byte[] nameBytes=name.getBytes("ISO-8859-1");
String username=new String(nameBytes,"gb2312");

***一劳永逸的方法:

以上两种情况,设置后就没有乱码了,但是每个接受页面都要设置,而get方法每个参数都要设置,相当麻烦。下面这种方法是设置一次就可以全部解决乱码问题:

1、post用filter:
在你的电脑安装tomcat的如下目录:apache-tomcat-6.0.26\webapps\examples\WEB-INF\classes\filters找到SetCharacterEncodingFilter.java文件复制到工程src目录下面,最好再建个filter包,在web.xml中添加并修改你所需要的:

<filter>
<filter-name>SetCharacterEncodingFilter</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>//类的全名
<init-param>
<param-name>encoding</param-name>
<param-value>gbk</param-value>//设置你需要的字符集
</init-param>
<filter>

<filter-mapping>
<filter-name>SetCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>//表示对所有页面起作用
</filter-mapping>

2、get改server.xml:
在apache-tomcat-6.0.26\conf目录下打开server.xml找到下面代码:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="gbk"/>

3、Servlet输出:

用Servlet输出时需要加上如下代码:

response.setContentType("text/html;charset=gbk");

猜你喜欢

转载自mowuyan.iteye.com/blog/1055968