`
jacally
  • 浏览: 770089 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

中文乱码问题的根本解决办法是明确地指定整个应用系统统一的字符集

    博客分类:
  • JAVA
阅读更多
楼主angues1980(石头心)(JSF学习中)2005-08-16 11:45:48 在 Java / Web 开发 提问

昨天转贴了一篇《Java/J2EE中文问题终极解决之道》的文章(原贴http://www.jdon.com/idea/chinesejava.htm),里面提到“中文乱码问题的根本解决办法是明确地指定整个应用系统统一的字符集”。  
  要做到以下几点:  
  一、开发和编译代码时指定字符集为UTF-8。JBuilder和Eclipse都可以在项目属性中设置。    
  二、使用过滤器,如果所有请求都经过一个Servlet控制分配器,那么使用Servlet的filter执行语句,将所有来自浏览器的请求(request)转换为UTF-8,因为浏览器发过来的请求包根据浏览器所在的操作系统编码,可能是各种形式编码。关键一句:  
  request.setCharacterEncoding("UTF-8")。  
  网上有此filter的源码,Jdon框架源码中com.jdon.util.SetCharacterEncodingFilter  
  需要配置web.xml   激活该Filter。    
  三、在JSP头部声明:<%@   page   contentType="text/html;charset=   UTF-8"   %>。    
  四、在Jsp的html代码中,声明UTF-8:<meta   http-equiv="Content-Type"   content="text/html;charset=utf-8">    
  五、设定数据库连接方式是UTF-8。例如连接MYSQL时配置URL如下:  
  jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8  
  一般数据库都可以通过管理设置设定UTF-8    

 

    mysql可以修改my.ini配置文件,将以下设置改为utf8

[mysql]
default-character-set=utf8

 
  六、其他和外界交互时能够设定编码时就设定UTF-8,例如读取文件,操作XML等。    
   
  但是经过笔者测试还有几个问题文中的方法不能完全解决:  
  1.Form里面用GET方法传参时转换的问题;  
  2.URL后附带中文传参时的转换问题。  
   
  环境:操作系统WindowsXP   SP2(中文),Eclipse   3.1   with   Lomboz,tomcat   5.5.9   ,IE   6.0  
   
  一、正常POST方法传参:  
  页面a.jsp  
  <%@   page   language="java"   contentType="text/html;charset=UTF-8"   pageEncoding="UTF-8"%>  
  <html>  
  <head>  
  <meta   http-equiv="Content-Type"   content="text/html;charset=UTF-8"%>  
  </head>  
  <FORM   METHOD=POST   ACTION="/webtest/b.jsp"><INPUT   TYPE="text"   NAME="parm">  
  <INPUT   TYPE="submit"></FORM>  
  </html>  
  页面b.jsp  
  <%@   page   language="java"   contentType="text/html;   charset=UTF-8"   pageEncoding="UTF-8"%>  
  <html>  
  <head>  
  <meta   http-equiv="Content-Type"   content="text/html;charset=UTF-8"%>  
  </head>  
  <%  
  request.setCharacterEncoding("UTF-8");  
  String   strParm   =   request.getParameter("parm");  
  out.println(strParm);  
  %>  
  </html>  
  没有任何问题。  
   
  二、Form里面用GET方法传参时转换问题的解决方法:  
  页面a.jsp  
  ……  
  <FORM   METHOD=GET   ACTION="/webtest/b.jsp"><INPUT   TYPE="text"   NAME="parm">  
  ……  
  页面b.jsp  
  ……  
  String   strDisplay   =   new   String(strParm.getBytes("ISO8859-1"),   "UTF-8");  
  out.println(strDisplay);  
  ……  
   
  分析:根据解决方法判断,可能是在FORM在用GET方法包装参数到地址栏的URL链接时或者是在URL传递前,用的是ISO8859-1的编码(并且所用IE浏览器的高级选项中设置了总是以UTF-8发送URL这项,可以排除是在URL发送后转换的ISO8859-1编码),而这个编码方式的修改好像并不在《Java/J2EE中文问题终极解决之道》文中提到的那几个步骤之中,  
   
  三、URL后附带中文传参时的转换问题的解决方法:  
  修改b.jsp页面  
  ……  
  String   strDisplay   =   new   String(strParm.getBytes("ISO8859-1"),   "GBK");  
  ……  
   
  分析:根据解决方法判断,URL在传递前,用本地操作系统的默认编码(GBK)把中文编码为ISO8859-1。  
   
  同理,使用Servlet测试(包括建立Filter对请求进行编码转化),结果相同,不再赘述。  
   
  怎样才能用一种方法,一劳永逸地解决这3种情况下中文乱码问题呢?  
  1、用获取字符串的编码格式的方法(目前还没找到)来判断后调用各个方法。  
  2、还有一个是应用中不用GET方法和URL方法来传递参数。  
  3、必须使用GET方法或者URL方法传中文时,首先进行编码转化,比如建立静态文本常量的XXXX.properties文件,事先用JDK自带的vatie2ascii工具进行转化。  
  4、还有就是建立个空白页面包装参数再用POST方法转发。  

分享到:
评论

相关推荐

    关于处理Javaweb中中文乱码的问题文.pdf

    本文通过对中文乱码问题的深入分析,提出了解决中文乱码问题的根本办法,即明确指定整个应用系统统一字符集。通过指定统一字符集,可以解决 Java Web 技术开发中文乱码问题,提高应用系统的稳定性和可靠性。

    mysql乱码问题解决办法

    ### MySQL乱码问题解决办法 在使用MySQL的过程中,经常会出现字符显示乱码的问题,尤其是在处理中文数据时更为常见。本文将详细介绍如何通过多种途径解决MySQL中的乱码问题,包括更改MySQL服务器的字符集设置、调整...

    MYSQL字符集与乱码问题分析

    《MySQL字符集与乱码问题分析》一文深入探讨了字符编码的历史背景、技术细节以及在MySQL中的应用,尤其关注解决常见的乱码问题。本文将根据提供的内容摘要,详细阐述其中涉及的关键知识点。 ### 字符集背景知识 ##...

    java中文乱码字符集解决大全

    ### Java中文乱码字符集解决大全 #### 一、中文问题的来源与背景 随着信息技术的发展,计算机系统从最初仅支持单字节字符编码(如ASCII),逐渐演变为支持多种多样的字符集,以满足全球不同语言的需求。这其中最...

    WebSevice 中文乱码

    然而,仅凭这一点可能还不足以完全解决问题,还需要检查整个系统的编码设置是否一致,以及是否存在其他可能导致乱码的因素。 总之,“WebSevice中文乱码”是一个涉及多个层面的问题,需要从编码一致性、SOAP消息头...

    JSP中文乱码问题解决总结

    1. 确保统一字符集:项目中所有文件,包括JSP、HTML、CSS、JavaScript、数据库配置文件等,都应使用同一字符集,如UTF-8,避免出现编码混乱。 2. 设置JSP页面编码:在JSP页面头部使用`;charset=UTF-8" %&gt;`指令,...

    解决jsp+servlet开发中的中文乱码问题

    综上所述,解决JSP+Servlet开发中的中文乱码问题主要依赖于确保整个系统中各个部分都使用相同的字符集。通过在JSP页面、Servlet以及表单处理中设置合适的字符集,可以有效地避免中文乱码问题,提高系统的稳定性和...

    struts 中文乱码问题解决

    在表单提交过程中,如果表单的`&lt;form&gt;`标签中没有正确指定`charset`属性或`Content-Type`头信息中的字符集与实际使用的字符集不符,也会引发乱码问题。 #### 3. JSP页面和资源文件编码问题 JSP页面和资源文件如...

    乱码解决 乱码解决 乱码解决 乱码解决 乱码解决

    4. **程序配置不当**:编程语言或者应用程序的编码设置不正确,例如在Java中未指定正确的字符集,可能会导致乱码。 5. **网络传输问题**:在网络传输过程中,如果文件的编码信息丢失,或者传输过程中数据损坏,也...

    Mysql字符集设置原理及常见问题解决

    MySQL字符集设置原理及其常见问题解决是数据库管理中不可或缺的一部分,尤其对于处理多语言或特殊字符的数据时,正确的字符集配置至关重要。字符集定义了数据库、表和字段能存储的字符范围,它决定了数据的编码和...

    Struts2中文乱码问题最终解决方案

    处理中文乱码问题需要全面考虑整个应用程序的编码环境,从客户端、服务器配置、框架设置到数据库,每个环节都不能忽视。虽然这是一个繁琐的过程,但只有这样,才能确保应用程序在全球化背景下正常运行,满足多样化的...

    解决中文乱码问题专题

    本专题将深入探讨中文乱码问题的成因、解决方案以及预防措施,旨在帮助初学者更好地理解和处理这类问题。 一、中文乱码的产生原因 1. 字符编码不一致:不同的系统或软件可能采用不同的字符编码标准,如GBK、GB2312...

    Java Web开发中文乱码问题的研究与解决.pdf

    总之,Java Web开发中的中文乱码问题需要从多个层面进行检查和调整,确保数据在整个处理链路中的编码一致性,才能有效地避免和解决乱码问题。这需要开发者具备扎实的字符编码知识,并在实践中积累经验,以便在遇到...

    java中文乱码问题详解--- java中文乱码问题详解

    **网络传输中的编码问题**:在网络环境中,如Web应用程序中,客户端发送的数据和服务器端接收的数据可能存在编码不一致的情况,尤其是在处理HTTP请求时,若没有明确指定字符集,浏览器通常会默认使用UTF-8编码进行...

    linux mysql中文乱码问题解决

    通过调整`my.cnf`文件中的字符集设置并重启MySQL服务,可以有效地解决Linux环境下MySQL中文乱码问题。此外,还需要确保数据库、表、字段以及使用的IDE等工具中的字符集设置一致,以避免因字符集不匹配导致的乱码问题...

    一次性解决中文乱码问题

    在IT领域,中文乱码问题是一个常见的困扰,无论是开发网页、桌面应用还是数据库系统,都可能遇到这种情况。本文将深入探讨中文乱码的成因、解决方案,并为初学者提供一些实用的建议,帮助你们一次性解决这个问题。 ...

Global site tag (gtag.js) - Google Analytics