原文地址: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 |
|