mysql编码gb2312转utf8

来源:互联网 发布:java考试考什么证 编辑:程序博客网 时间:2024/04/29 16:07

1.命令行进入mysql安装目录下的bin目录后,
  输入mysqldump -uroot -p --default-character-set=latin1 --extended-insert=FALSE databasename> dumdb.sql
2.在linux下,输入
  sed 's/latin1/utf8/g' dumdb.sql>dumnew.sql
3.在mysql安装目录下的bin目录中:mysql -hlocalhost -uroot -pcncybh newdbname< dumnew.sql

解释:
第一行是导出,其中latin1是原来数据库的编码,--extended-insert=FALSE是为了导出为多行Insert,不然可能因为Insert语句过长出错;
第二行修改,sed语句是把导入时设置的表和字段类型改成utf8;
第三行是导入,gb2312是输入文件用的编码类型,个人理解是这样的:原来数据库使用latin编码,但存储数据的时候是用gb2312,其间mysql 会对其进行转换,所以导出的时候用的是latin编码,但是其中的内容其实是gb2312的,所以导入的时候采用gb2312编码,因为第二行中已经把标类型改成utf8了,所以建出来的表是utf8的,而数据会通过mysql自己把gb2312转成utf8,这样进到数据库中的数据就是utf8的了。

PS:什么是SED?简单来说,SED是个编辑器。就像Windows下的记事本一样是用来编辑文本的,但是从操作方式来看它是个很特殊的编辑器!sed(Stream EDitor)是“流编辑器”的意思。最早是Unix平台的工具,但已经被移植到各个平台上了。它有两个主要的属性:
一它是个编辑器; 二它这个编辑器是面向“流”的。

名称:SED (Stream EDitor)
描述:命令行下运行的流编辑器
平台:Unix,Linux,MacOS,Windows,DOS,……
大小:根据平台和版本的不同从13KB-200KB不等(超过100K的一般都是加了多语言支持的)