分享

java 乱码

 软件团队头目 2007-01-17
原文地址:http://blog./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./wmywind

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多