java 乱码

来源:百度文库 编辑:神马文学网 时间:2024/04/16 23:07:53
原文地址:http://blog.ustcer.cn/blog.aspx?blogid=1131#diary_14800
----------------------------------
本文讨论的中文乱码包括两个方面:普通网页乱码和mysql数据库中文数据乱码。
原因:主要是不同的环境下对中文数据的编码方式不同,在数据传输的过程中,出现了
由于系统自动转换而导致编码方式不一致,而出现中文数据乱码问题
1、普通乱码
分析1:主要是由于在普通页面上使用的是GB2312或者GBK编码(BIG5为中文繁体编
码),在页面间进行中文数据传输时,会采用ISO-8859-1编码方式,所以为了不出现乱
码,需要将按ISO-8859-1编码的中文数据重新转换为GB2312或者GBK编码。
解决:其中oldStr为接收前的中文数据,newStr为处理后的数据,在新的页面中使用
newStr就不会出现乱码了。
byte[] b = oldStr.getBytes("ISO-8859-1");
newStr = new String(b,"GB2312");
其实如果在JAVA应用程序中出现中文乱码问题,可以通过类似的方法进行解决。
分析2:当使用Flash作为表单进行中文数据传输时,也会出现乱码,这时候只要在Flash
的源文件的第1帧中输入下面的代码,其他同分析1,则可解决中文乱码问题。
System.useCodepage = true;   //通知 Flash Player使用传统代码页来解释外部文本
2、mysql中文数据乱码,其中mysql数据库采用的是默认配置。
分析1:在4.x的版本中,使用mysql control center来作为管理数据库的工具,这时可
以通过下面的方法解决。
url =
"jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=GB2312";
也就是说在通常的url后面加入useUnicode=true&characterEncoding=GB2312,实际上起
作用的还是characterEncoding=GB2312
分析2:在5.x的版本中使用mysql control center会出问题,所以一般使用mysql官方出
的mysql query browser 和 mysql administrator来进行数据管理。可以通过分析1中的
方法来处理中文乱码问题,但这时可以看到在mysql query browser中的数据还是乱码,
原因不详,但可将数据库中相应表中存取中文数据的字段的Column Charset改为gb2312
或者gbk,则可以正常显示了。
分析3:当使用数据源进行数据库连接操作时,则需要将mysql数据库默认的编码方式改
为GB2312或者GBK,具体的操作在mysql数据库detail配置时,会提示数据库将采用的编
码方式,将其改为GB2312或者GBK即可。再将数据库中相应表中存取中文数据的字段的
Column Charset改为gb2312或者gbk,则可以正常显示了。
--
If you shed tears when you miss the sun, you will also miss the stars!
欢迎光临
http://blog.ustcer.cn/wmywind