中文字符乱码的原因及解决办法

2008-02-23 09:34:41来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

中文字符乱码的原因及解决办法

Java的内核是Unicode的,也就是说,在程序处理字符时是用Unicode来表示字符的,但是文件和流的保存方式是使用字节流的。在java的基本数据类型中,char是Unicode的,而byte是字节,因此,在不同的环节java要对字节流和char进行转换。这种转换发生时如果字符集的编码选择不当,就会出现乱码问题。

我们常见的乱码大致有如下几种情形:
1、汉字变成了问号"?"
2、有的汉字显示正确,有的则显示错误
3、显示乱码(有些是汉字但并不是你预期的)
4、读写数据库出现乱码

下面我们逐一对它们出现的原因做一些解释:

首先,我们讨论汉字变成问号的问题。

Java中byte与char相互转换的方法在sun.io包中。其中,byte到char的常用转换方法是:
public static ByteToCharConverter getConverter(String encoding);

为了便于大家理解,我们先来做一个小实验:比如,汉字"你"的GBK编码为0xc4e3,其Unicode编码是\u4f60。我们的实验是这样的,先有一个页面比如名为a_gbk.JSP输入汉字"你",提交给页面b_gbk.jsp。在b_gbk.jsp文件中以某种编码方式得到"你"的字节数组,再将该数组以某种编码方式转换成char,如果得到的char值是0x4f60则转换是正确的。

a_gbk.jsp的代码如下:

参考文献:

UTF-8 and Unicode FAQ

《JSP动态网站技术入门与提高》太阳工作室 孙晓龙 赵莉编著

参考文献:

UTF-8 and Unicode FAQ

《JSP动态网站技术入门与提高》太阳工作室 孙晓龙 赵莉编著

上一篇: 消息传递和 Java 消息服务(JMS)
下一篇: Weblogic8.1里面使用JDataStore的方法

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:用Java压缩文件或目录下的所有文件

下一篇:使用TextMiniing和Apache POI获得Word文件内容,无须MS-Office A