页面

2009年3月5日

mysql 数据库编码 中文显示乱码问题

mysql 数据库编码 中文显示乱码问题
2008-07-31 13:18

        搞了一个星期这个mysql 数据库编码——中文显示乱码问题,头都要大了,环境都配了N的N次方次了,想找个地方钻进去的心都有了……

        不过,终于在同事的协助,群里人的帮助,朋友的引导下,终于,终于,于2008年7月31日,周四上午11点45分左右搞定了,感谢天,感谢地,感谢命运让我们相遇,自从有了你……

        我们在群里大声的高歌,庆祝……

        废话少说,关键技术请往下看:

        1.my.ini中

        这一句:default-character-set=ltain1


        我把他改成了:       

        default-character-set=utf8
        skip-character-set-client-handshake

      2. 把 phpmyadmin2.11.6 \ libraries \ select_lang.lib.php 这个文件

       'zh-gb2312'         => array('zh|chinese simplified', 'chinese_simplified-gb2312', 'zh', '中文'),    改成:

        'zh-gb2312-utf-8'         => array('zh|chinese simplified', 'chinese_simplified-gb2312', 'zh', '中文'),

        'utf-8'        => 'utf8', 改成:'utf-8'        => 'latin1',

        这个时候再导入数据库,但是一定要注意数据库本身是什么编码!

        如果数据库本身是utf8-unicode-ci,那你在建立数据库和phpmyadmin的数据校对时都要用utf8-unicode-ci;如果数据库本身是utf8-general-ci,那你再建立数据路和phpmyadmin的数据校对时都要用utf8-general-ci。这点也很重要。

        建立数据库所选的编码是为了和导入数据匹配,phpmyadmin的数据校对是为了在phpmyadmin中看数据时不出现乱码。

         3.      utf8_unicode_ci & utf8_general_ci 区别

        对于一种语言仅当使用utf8_unicode_ci排序做的不好时,才执行与具体语言相关的utf8字符集 校对规则。例如,对于德语和法语,utf8_unicode_ci工作的很好,因此不再需要为这两种语言创建特殊的utf8校对规则。

     utf8_general_ci也适用与德语和法语,除了‘ ’等于‘s’,而不是‘ss’之外。如果你的应用能够接受这些,那么应该使用utf8_general_ci,因为它速度快。否则,使用utf8_unicode_ci,因为它比较准确

没有评论: