Tomcat的中文乱码的经典解决方案(转)
2007-11-16 11:24
274 查看
Tomcat的中文乱码的经典解决方案(转)
2007年09月07日 星期五 13:34
2007年09月07日 星期五 13:34
引言: 近期在做我们学校(华中科技大学)的注册中心的信息速递系统中又遇到了久违中文乱码的问题。由于注册中心的HUB系统需要团队开发完成,这导致中文乱码问题尤为突出。万般无奈之下,硬下头皮寻根究底的找出问题的真正原因。皇天不负有心人,在查阅了N多资料和做了无数次试验之后,终于找到了个人认为较为简单和经典的解决方案。 适用环境: 采用Tomcat 4.x或Tomcat 5.x,应用中出现中文乱码现象,且找不到统一的解决方案。 主要现象: 在应用中采用GET方式或POST方式时会出现中文乱码现象,而且针对这两种方式不能使用唯一的解决方案。一般您可能会使用以下的几种方案: A.request.setCharacterEncoding("gb2312"); B.type = new String(type.getBytes("ISO8859-1"), "GB2312"); C.在Tomcat的配置文件Server.xml中的Connector标签中加入“URIEncoding=UTF-8”属性; D.conf/web.xml 指定多个Encoding参数; E.编写一个filter,处理Post提交的编码问题; 但有时候您可能会发现,这样做会让问题更糟糕。 问题分析: 要解决中文乱码的问题,首先要了解Tomcat在背后的处理机制,在查阅了许多资料以及许多前辈们写的文章并做了无数次试验之后,我找到了导致Tomcat中出现中文乱码的主要原因,即Tomcat对GET和POST两种方式的处理方法:在Tomcat 4.x时,采用的是GET和POST两种方式使用相同的字符集,也就是UTF-8。但在Tomcat 5.x下,GET和POST方式采用了不同的字符集。 解决方案: 首先我想申明,我所给出的只是解决方案的一种,并不代表我给出的方案能解决大家所遇到的所有问题,但是有一点是肯定的,大家在同一个系统中必须使用相同的解决方案,如果可以最好统一您应用中各个组件包括数据库、JDK、WEB服务器等等的字符编码方案。 而我所采用的是下面的这种方案(只针对Tomcat): Tomcat 4.x 1.页面编码采用“charset=gb2312”; 2.接收参数使用“request.setCharacterEncoding("gb2312");”; 3.如果需要在转换编码,如“type = new String(type.getBytes("ISO8859-1"), "GB2312");”; Tomcat 5.x 1.在配置文件Server.xml的Connector标签中加入“useBodyEncodingForURI="true"”,这个属性主要是让Tomcat 5.x在GET和POST方式使用相同的字符集。如果这样做仍不能解决问题,您可以尝试再加入另一个属性“URIEncoding=UTF-8”; 2.其他处理同Tomcat 4.x |
相关文章推荐
- zz:Tomcat的中文乱码的经典解决方案
- Tomcat的中文乱码的经典解决方案
- java;jsp;tomcat;mysql;hibernate;编码中文乱码全面解决方案
- 新方案-eclipse配置tomcat中文乱码另一种解决方案
- VIM中文乱码原理详解及终极解决方案[经典]
- Tomcat及MySQL中文乱码问题解决方案总览
- JSP中文乱码解决方案-Tomcat 5.0
- java;jsp;tomcat;mysql;hibernate;j2ee 编码中文乱码全面解决方案
- java;jsp;tomcat;mysql;hibernate;编码中文乱码全面解决方案
- java中文乱码-经典解决方案
- Tomcat 中 jsp 中文乱码显示处理解决方案
- JSP中文乱码解决方案了解和TOMCAT中文乱码解决
- 解决地址栏传中文出现乱码 tomcat配置文件解决方案
- Tomcat及MySQL中文乱码问题解决方案总览
- java;jsp;tomcat;mysql;hibernate;j2ee 编码中文乱码全面解决方案
- 中文乱码Tomcat解决方案
- VIM中文乱码原理详解及终极解决方案[经典]
- tomcat服务器,url get请求中文乱码解决方案
- JSP中文乱码解决方案-Tomcat5.0版
- TOMCAT中文乱码问题的解决方案