此苹果非彼苹果
« »
2010 年 12 月 27 日LA/NMP

mysql数据库编码转换(gbk转成utf8)的解决方法

由于各种原因考虑,之前的网站采用的gbk编码,现在又遇到其他原因,为了长远考虑,需要将网站数据库gbk编码转换成utf8的。

今天进行了一下测试,已经转换完成。还算比较顺利。方法也简单。

step 1.将原来的gbk编码的数据库导出为utf8编码的(采用了gzip压缩)

# /usr/local/mysql/bin/mysqldump -uroot -proot –compatible=mysql40 –default-character-set=utf8 –extended-insert –force –add-locks –add-drop-table discuz | /usr/bin/gzip -9 > /home/ftp/backup/bak_1227.sql.gz

这里起主要作用的就是红色标出来的这两个选项了。

step 2.将网上的备份数据库文件下载到本地,解压

# gunzip bak_1227.sql.gz

导入到本地测试库wwwtest(手动创建的时候选的utf8_general_ci编码)中

# /usr/local/mysql/bin/mysql -uroot -proot wwwtest < /home/ftp/backup/bak_1227.sql

打开phpmyadmin查看一下数据库显示,数据库和表编码类型都是utf8_general_ci了,OK,大功告成。

————————————————————————————

这里需要注意的问题,导出时的文件编码,由于要导入到utf8编码的数据库中,并且导成utf8编码,所以添加参数–default-character-set=utf8,这样的话导出来的数据库备份文件就是utf8格式的文件了.还有另一个参数–compatible=mysql40,这个参数带上后就不会把原数据库中的编码设置导出来,比如我要导出的数据库是gbk编码的,如果不加–compatible=mysql40这个参数,那导出来的文件中创建表的语句中就会带有DEFAULT CHARSET=gbk,如果这样的话导入数据时,即使数据库是utf8编码的,导入后表的编码也会变成gbk.所以要加–compatible=mysql40这条参数,这样就不会在数据库备份文件中带有DEFAULT CHARSET=gbk,这样就可以导入到utf8编码的数据库中,而且导入的表也使用的是当前数据库的编码

方法参考于:http://www.ldrcg.com/archives/1335.html

日志信息 »

该日志于2010-12-27 17:53由 Apple 发表在LA/NMP分类下, 评论已关闭。 如果觉得这篇文章不错,可以分享给你的朋友们~ :)
返回顶部