`
相忘江湖90
  • 浏览: 4664 次
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于乱码的解决办法

阅读更多

Java中文乱码问题的解决方案 只要掌握了中文乱码问题产生的原因,然后对症下药,就可以顺利地解决这些问题。下面我们对容易产生乱码问题的场景进行分析,并提出解决方案。 1.以POST方法提交的表单数据中有中文字符 由于Web容器默认的编码方式是ISO-8859-1,在Servlet/JSP程序中,通过请求对象的getParameter()方法得到的字符串是以ISO-8859-1转换而来,这是导致乱码产生的原因之一。为了避免容器以ISO-8859-1的编码方式返回字符串,对于以POST方法提交的表单数据,可以在获取请求参数值之前,调用request.setCharacterEncoding("GBK"),明确指定请求正文使用的字符编码方式是GBK。在向浏览器发送中文数据之前,调用response.setContentType("text/html;charset=GBK"),指定输出内容的编码方式是GBK。 对于JSP页面,在获取请求参数值之前,写上下面的代码: <%request.setCharacterEncoding("GB2312");%> 为了指定输出内容的编码格式,设置page指令contentType属性,如下: <%@ page contentType="text/html; charset=GBK" %> 在Web容器转换JSP页面后的Servlet类中,会自动添加下面的代码: response.setContentType("text/html; charset=GBK"); 2.以GET方法提交的表单数据中有中文字符 当提交表单采用GET方法时,提交的数据作为查询字符串被附加到URL的末端,发送到服务器,此时在服务器端调用setCharacterEncoding()方法也就没有作用了。我们需要在得到请求参数的值后,自己做正确的编码转换。 String name = request.getParameter("name"); name=new String(name.getBytes("ISO-8859-1"),"GBK"); 在第一行,调用getParameter()方法得到的字符串name的Unicode值是以ISO-8859-1编码转换而来,调用name.getBytes("ISO-8859-1"),将得到原始的GBK编码值,接着,对new String()的调用将以GBK字符集重新构造字符串的Unicode编码。 为了方便从ISO-8859-1编码到GBK的转换,我们可以编写一个工具方法,如下: public String toGBK(String str) throws java.io.UnsupportedEncodingException { return new String(str.getBytes("ISO-8859-1"),"GBK"); } 3.在数据库中存储和读取中文数据 对于大多数数据库的JDBC驱动程序,在Java程序和数据库之间传递数据都是以ISO-8859-1为默认编码格式,所以,我们在程序中向数据库存储包含中文的数据时,JDBC驱动程序首先把程序内部的Unicode编码格式的数据转化为ISO-8859-1编码,然后传递到数据库中,加上数据库本身也有字符集,这就是为什么我们常常在数据库中读取中文数据时,读到的是乱码。 要解决上述问题,只需要将数据库默认的编码格式改为GBK或GB2312即可,不同的数据库还提供了另外的方式来处理字符编码转换的问题,读者在实际应用过程中,可针对具体情况再做具体处理,只要理解了编码转换的过程,就能找到问题的所在,进而解决问题。 4.Servlet/JSP在不同语言系统的平台下运行 有时候,我们在中文系统平台下开发的Web应用程序移植到英文系统平台下,在Servlet和JSP中直接书写的中文字符串在输出时,将显示为乱码。这是因为在编译Servlet类或者JSP文件时,如果没有使用-encoding参数指定Java源程序的编码格式,javac会获取本地操作系统默认采用的字符集,以该字符集将Java源程序转换为Unicode编码保存到内存中,然后将源程序编译为字节码文件(字节码文件采用的是UTF-8编码),保存到硬盘上。 在英文平台下,采用的默认编码格式是ISO-8859-1,所以在编译转换后,执行输出时,原先在源文件中书写的中文字符串就变成了乱码。 要解决这个问题,在编译Servlet类的源程序时,可以用-encoding参数指定编码为GBK或GB2312,例如: javac –encoding GBK HelloServlet.java 对于JSP页面,只要在page指令中用contentType属性或pageEncoding属性指定编码格式为GBK或GB2312,Web容器就可以正确转换和编译JSP文件了。例如: <%@ page contentType="text/html; charset=GBK" %> 或 <%@ page pageEncoding="GBK" %>

分享到:
评论

相关推荐

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

    二、乱码的解决方法 1. **确定编码格式**:首先,你需要确定原始文件的正确编码格式。可以使用诸如Notepad++、HexEdit等工具来查看文件的字节序列,从而推测其可能的编码。 2. **编码转换**:一旦确定了正确的编码...

    ZXing 2.1版GBK中文乱码解决办法

    ZXing 2.1版GBK中文乱码解决办法: zxing中扫瞄二维码图片,如果包含Gbk中文,乱码解决办法是修改DecodedBitStreamParser.h文件,在里面加入GBK的判断。 在2.1版本中,解码的定义不在这个类中了,挪到了...

    日语乱码解决方法.txt

    日语乱码解决方法.txt

    plsql乱码解决办法

    PL/SQL 乱码解决办法 PL/SQL 乱码问题是 Oracle 数据库开发中常见的问题之一,当我们使用 PL/SQL Developer 查询数据时,可能会遇到中文乱码的问题。下面我们将详细介绍 PL/SQL 乱码的解决办法。 问题描述 在使用...

    C#接收json数据后中文乱码解决方法

    C#接收Json格式数据,中文出现乱码解决方法

    SecureCRT中文乱码解决方法

    "SecureCRT中文乱码解决方法" SecureCRT 是一款功能强大且高效的 SSH 客户端,可以与多种协议进行连接,包括 SSH、Telnet 和 rlogin 协议。然而,在使用 SecureCRT 连接 Linux 服务器时,可能会出现中文乱码的情况...

    Drozer中文乱码解决办法.docx

    Drozer 中文乱码解决办法 Drozer 是一款功能强大的 Android 渗透测试工具,但是在使用时,可能会遇到中文乱码的问题。今天,我们将探讨 Drozer 中文乱码解决办法。 一、问题描述 在使用 Drozer 时,可能会遇到...

    LINUX中文乱码解决方法

    ### Linux中文乱码解决方法 在使用Linux操作系统的过程中,用户可能会遇到中文显示出现乱码的情况。这种情况通常是由于系统编码设置不正确或者环境变量配置不当所导致的。本文将详细介绍如何解决Linux中的中文乱码...

    Linux下安装Oracle中文乱码解决办法

    Linux下安装Oracle中文乱码解决办法 Linux下安装Oracle中文乱码解决办法 Linux下安装Oracle中文乱码解决办法 Linux下安装Oracle中文乱码解决办法 Linux下安装Oracle中文乱码解决办法 Linux下安装Oracle中文乱码解决...

    Maven发布Jar包中文乱码解决方法

    Maven发布Jar包中文乱码解决方法 Maven 是一个基于项目对象模型(Project Object Model,POM)的项目管理工具,广泛应用于 Java 项目的构建、测试和打包。然而,在使用 Maven 发布 Jar 包时,ometimes 中文字符会...

    PLSQL导出CSV后中文乱码解决办法

    除了以上方法,你还可以尝试其他解决方案,例如在PLSQL Developer工具中直接设置导出时的编码,或者使用第三方工具进行文件转换。例如,可以使用Notepad++这样的文本编辑器打开CSV文件,查看并更改文件编码,然后再...

    数据库乱码解决方法

    在本文中,我们将深入探讨如何解决Oracle数据库中的乱码问题,并尝试将其理论应用扩展到其他类型的数据库系统。 首先,我们要了解数据库的字符编码。Oracle数据库支持多种字符集,如US7ASCII、WE8ISO8859P1、AL32...

    Linux系统中文乱码解决完整方案

    Linux系统中文乱码解决完整方案 本文档旨在解决 Linux 系统中文乱码问题,提供了一个完整的解决方案。该问题是由于 Linux 和 Windows 系统下所用户的字符集不同,Linux 系统使用的是 Unicode 字符集,而 Windows ...

    solr乱码解决方法

    solr乱码解决方法,excel文件,贴图说明。

    java c++ 通信之间的乱码解决方法

    解决跨语言通信的乱码问题,关键在于识别两端的编码方式,并在数据传输前进行正确的转换。在Java中,可以使用`getBytes`和`new String`配合指定编码进行转换;在C++中,通常需要手动处理编码转换,可能需要用到第三...

    java乱码问题解决方法

    Java 开发中常见的问题之一,解决这个问题需要了解 Java 的编码方式、JSP 中文乱码问题、Tomcat 5.5 中文乱码问题、JDBC ODBC Bridge 的 Bug 及其解决方法、Solaris 下 Servlet 编程的中文问题及解决办法等。...

    水晶报表8.5乱码解决方法

    方法二就是在打包CrySatl的安装程序时,可以打包Crystal Report8.5的Runtime dll,而另个一个crviewer.dll则需要使用Crystal Report9.0版本的就可以解决这个问题,这种方法则比较简单方便。补充说明,还有方法三,就是不...

Global site tag (gtag.js) - Google Analytics