由于要帮忙维护某个私人社团网站,学弟明明告诉我是UTF-8编码,但在使用PHPMyAdmin浏览数据表内容时,却是一片乱码。这个问题困扰我很久,终于因为下面这篇文章搞清楚了:原来学弟架的网站MySQL预设编码是latin1。
以下文章引用自:http://a-wei.net/archives/4
相信MySQL的编码对很多人来说…一直是个相当令人头痛的问题…今天所要做的介绍是如何把数据库的数据,由latin1转成utf8..
一般.. MySQL装起来后(用rpm安装) ,系统的预设编码是latin1.
而很多人在安装一些网页的系统时,如wordpress、LifeType、phpBB …等等,都会选择utf8 。
这时…系统一样可以正常运作…只是当用phpmyadmin进入管理数据库时,就会发现..怎么中文字的部分都变成了歪七扭八..
或者一些鬼画符的文字。如:凡 事先從工作講起
此现象就是utf8的文字以latin1形式储存,phpmyadmin以utf8的数据读取方式读取…读出来的数据就是这种鬼画符…><。
若要解决phpmyadmin读出的鬼画符…有两个方法:
1.进入phpmyadmin内一个名为libraries的子目录..编辑select_lang.lib.php.找到$mysql_charset_map这一段下方..
‘utf-8′ => ‘utf8′,
把它改成
‘utf-8′ => ‘latin1′,
然后存档…这时候就可以发现原先的鬼画符…这时候又都正常了.
2.把数据库的编码转成utf8 …
步骤:
a.把数据库dump出来
mysqldump -u xxx -p database > database.sql - - default-character-set=latin1
这时候dump出来的database.sql是latin1的档案格式,然而是utf8的文字数据,因此这时若用vi开档看它…
还是会发现中文字是鬼画符…这时不要被眼前的假象所骗…以为自己做错..几接着做下一步骤。
b.把dump出来的database.sql下载回去..用emEditor(网路上可免费下载,是个支援utf-8的编辑器)把database.sql打开,
它可以正常识别utf8的文字..用取代的功能,把latin1都取代成utf8 ,之后直接另存新档..这时把档案类型设定储存成UTF-8。
c.再把database-utf8.sql上传到server ..这时我们用vi开启它..就可以看见是正常的中文字..这就表示档案没问题啰。
d.把档案汇入数据库
mysql database < database-utf8.sql -u xxx -p –default-character-set=utf8
如果数据量不是很大…那么很快就可以完成这个步骤..这时候若没有错误讯息出现..那么恭喜你..
你已经完成了数据库转换的工作了。如果有错误讯息出现..主要有两个情形..
1.文件档内的中文字,用vi看是乱码..文件档的格式不是utf-8。
2.汇入的时候漏掉指定采用utf8的数据编码汇入。
以上的作业是在数据库系统都是处于latin1的环境底下,也就是没有在my.cnf指定default-character-set=utf8。
vi如果猜不出来就会用预设编码观看,如果你知道是用什么编码了话,改变检视编码就好. set encoding=utf-8
本文Dao Blog - 道博客版权所有,可转载,但需注明出处:http://www.daoblog.com/mysql-latin1-utf8.html
下篇文章: bbPress
上篇文章: Disable WordPress Revisions and Autosave
"MySQL latin1 转换 utf8" was posted on Thursday, September 4th, 2008 at 3:46 pm.


