Tomcat乱码全解决

系统 1673 0

转自: http://hpi-ls.blog.163.com/blog/static/20214748201022295532305/

前言:

使用Tomcat进行JSP开发最头疼的莫过于中文乱码问题了,总结Tomcat乱码问题出现的原因必须明白以下几点:

内容:

1. Tomcat一般总是默认使用ISO-8859-1作为字符编码方式的。所以,除非你在Servlet中使用了 request.setCharacterEncoding("编码方式");指定了特殊的编码方式,否则Tomcat默认使用ISO-8859-1的编码方式。

2. 在JSP页面中pageEncoding和charset和含义是不同的。pageEncoding是指页面的编码格式(请记住!,十分重要~,与显示无关),也就是说无论你JSP里的pageEncoding采用什么方式,如果出现中文乱码,原因不在于pageEncoding的所指定的编码方式不对,而在于charset的属性不对。charset是负责JSP页面中的字符按什么编码方式显示。pageEncoding只负责页面的编码格式,而后 JAVA虚拟机负责按照pageEncoding指定的编码转换成Unicode编码的字节码文件。(也就是说,无论你pageEncoding指定什么方式,最终都是转换成了Unicode编码。)另外请大家注意,如果从客户端提交的用户请求里的中文也是使用pageEncoding方式编码的。也就是说,在Servlet中request.getParameter("参数");Tomcat默认是使用ISO-8859-1方式去读取的,但实际里面的字符编码方式应该是JSP页面pageEncoding所指定的方式。除非用户自己加上request.setCharacterEncoding("编码方式");

3.  明白pageEncoding和charset之间的关系。一般而言,如果页面里指定了pageEncoding的方式也就是说,比如:

<%@ page language="java" import="java.util.*" pageEncoding="GBK" %> 这句话,而没有指定charset的话,那么页面默认是按照charset=ISO-8859-1编码方式显示字符,按照 pageEncoding="GBK"方式进行页面的编码。如果你的JSP页面里面没有指定pageEncoding方式,而只是说明了charset的话,比如:

<%@ page contentType="text/html;charset=utf-8"%> 这句话,那么JSP默认是按照pageEncoding="utf-8"进行页面编码的,字符集按照charset=utf-8"显示。

 

4. 使用request.setCharacterEncoding("编码方式");

注意: request.setCharacterEncoding()仅仅对POST提交方式起作用,对于GET方式提交还是会出现乱码问题 要解决GET 提交中文的乱码问题,可以在Server.xml 的<Connector port="8888" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

加入: URIEncoding="utf-8" useBodyEncodingForURI="true"

另外, request.setCharacterEncoding()这句话一定要放在要读取的第一参数之前调用。否则也不起作用了!!

5. 也可以创建一个filter来对编码进行转换 ,但filter也只对post提交方式起作用,对get无能为力。URIEncoding对post不起作用。

 

Tomcat乱码全解决


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论