总结下MYSQL编码转换的问题latin1转utf8[网络技术]
本文“总结下MYSQL编码转换的问题latin1转utf8[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
昨天碰到个PHP网站,数据库是MYSQL5.1的,进了网站的phpmyadmin管理后发现表内中文全部显示乱码,导出后本地导入一样是乱码,无法查看所需求的信息,乱码普通情形不用说都知道大都是编码的问题,查看了下目标库的编码为latin1,预计网站程序是GBK的...直接备份下载,下载到本地需求转换下编码,惋惜从前没搞过,网上搜索了一堆资料测试...具体有这几种我给需求的朋友总结下,就不用处处搜索了
一:
1、备份数据库
mysqldump --default-character-set=latin1 --create-options=false --set-charset=false -u root -p 数据库名称 > E:\back.sql
2、成立新数据库
CREATE DATABASE 数据库名称 CHARACTER SET utf8 COLLATE utf8_general_ci;
3、导入数据
mysql -u root -p --default-character-set=gbk 数据库名称 < E:\back.sql
二:
步骤一 号令行履行:mysqldump --opt -hlocalhost -uroot -p*** --default-character-set=lantin1 dbname > /usr/local/dbname.sql
步骤二 将 dbname.sql文件中的create table语句的CHARSET=latin1改成CHARSET=utf8
步骤三 在dbname.sql文件中的insert语句之前加一条'set names utf8;'
步骤四 将dbname.sql转码为utf-8格局,倡议利用UltraEditor,可以直接利用该编辑器的'转换->ASCII到UTF-8(Unicode编辑)',大概将文件另存为UTF-8(无BOM)格局
步骤五 号令行履行:mysql -hlocalhost -uroot -p*** --default-character-set=utf8 new_dbname < /usr/local/dbname.sql
总结:这种办法有个致命之处就是当数据中有大量中文字符和其他特别标记字符时,很有大概招致在[步骤五]时报错招致无法正常导入数据,假如数据库对比大可以辨别对每张表履行上述步骤
三:
为了办理第一种办法中总结时说到的问题,在网上苦苦查找了一天资料才东拼西凑的搞出一个对比稳妥的办理办法
步骤一 将待导出的数据表的表构造导出(可以用Phpmyadmin、mysqldump等,很简单就不说了),然后将导出的create table语句的CHARSET=latin1改成CHARSET=utf8,在目标库newdbname中履行该create table语句把表构造建好,接下来开始导出-导入数据
步骤二 号令行:进入mysql号令行下,mysql -hlocalhost -uroot -p*** dbname
步骤三 履行SQL select * from tbname into outfile '/usr/local/tbname.sql';
步骤四 将tbname.sql转码为utf-8格局,倡议利用UltraEditor,可以直接利用该编辑器的'转换->ASCII到UTF-8(Unicode编辑)',大概将文件另存为UTF-8(无BOM)格局
步骤五 在mysql号令行下履行语句 set character_set_database=utf8; 注:设置mysql的环境变量,这样mysql在下一步读取sql文件时将以utf8的情势去注释该文件内容
步骤六 在mysql号令行下履行语句 load data infile 'tbname.sql' into table newdbname.tbname;
注意:千万不要忘了第四步
采取第二种办法,全部数据均正常导入,且格局转换成功没有乱码
四:
mysql数据转换编码
[root@piglet home]# mysqldump -u root -p --default-character-set=latin1 --set-charset=utf8 --skip-opt aiyomama_cn > /home/sites/savemoney.sql
Enter password:
五:
下回来的是latin1乱码的文件,因此,本机也架起Mysql5.0的环境
2. 然后新建一个空数据库,编码为UTF8,用下回来的sql文件导入
3. 再用phpmyadmin导出来,这样编码就成了UTF8
4. 把导出的sql文件中全部的DEFAULT CHARSET=latin1替换成DEFAULT CHARSET=utf8
5. 删除本来的latin1编码的数据库,导入这个UTF8编码的sql文件
完成:)
增补一下重点:
在履行完第2步的时刻,用PHPMYADMIN翻开数据库看看
里面全部的表和字段都还是LATIN1,不要紧,持续履行第3步
履行完第3步,可以用文本编辑器翻开SQL文件看看,换UTF8格局查看
这时,表和字段的内容就是UTF8了!
以上五种办法我都试验了一遍,大概是数据库实在太大,有的办法完好不行,有的可以但只能转换到一半也出错终止,无法转换完好部,最后在不懈勤奋之下找到个编码转换的PHP小脚本文件,利用后全部库转换正常,看来还是工具来的便利啊,手工忙了半天都没办理...不过还有点就是不管碰到什么问题,搜索引擎普通情形下都能帮忙你办理问题,只要你乐意去花时间自己办理问题.
以上是“总结下MYSQL编码转换的问题latin1转utf8[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |