老话题,GB2312,UTF-8,MYSQL

最近,由于flashmov.com数据迁移又碰上了让人头疼的编码问题。
由于国内各大视频分享网站用的编码不一致,所以我们面临一个统一编码的问题。所以只能统一使用UTF-8编码。
mysql数据库编码问题可能也让很多朋友头疼吧。在这里我将我自己的体会和大家分享,希望大家都来讨论。
首先,我认为数据库只是提供一个存储空间,其实它的编码可以无视。你入库的时候都当成是字符串入库,可能你会发现把UTF-8编码的中文入库后变成乱码(数据库用的是GB2312),那没关系。我们做的是web的应用,只要显示的时候正常就可以了 :)。你可能用phpmyadmin这样的工具查看数据库的时候是乱码,没关系,你手动调节流量器的编码和你数据入库时用的编码一致就可以了。起码我是这么做的,因为这样可以省去大量的工作。
那么,当我有一个大型的.sql文件要导入的时候怎么转换编码呢?
  • 以前,我用的editplus。打开文件后,另存为选择 UTF-8 。done!后来发现editplus在处理的时候还是不够理想,可能有极少部分中文不能正常转换,所以导入的时候可能缺少' 而报错。
  • 所以,在这里向大家推荐使用linux 下 iconv 这个命令。我昨晚转了一个50M的.sql文件,完全没有问题。命令如下:
  • iconv -t utf-8 -f gb2312 -c old.sql > new.sql  说明一下:-t 表示目标编码 -f 表示原始编码,呵呵,不明白可以man一下 ^_^
这样,入库的数据就都是UTF-8了,只要你把web输出页面的编码定成UTF-8就一切正常了。
如果你的页面的title标签含有中文,并且是UTF-8编码,请把
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
放到 <title>前面。
--
http://www.flashmov.com

评论

  1. 对于mysql那一段有同感,不过没用过linux

    回复删除
  2. Great work!
    http://goiozuwl.com/ffzp/grgd.html | http://fjcjapny.com/miph/asxl.html

    回复删除

发表评论

此博客中的热门博文

无意中找到自己的msn spaces

发泄一下对目前户口迁移制度的不满

Getting started with Google Web Toolkit (GWT)