快速业务通道

MySQL下数据表混乱的字符编码处理以及一些处理字符编码时的常用命令整理

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-18

  因为不知道什么时候的原因,我们有一个数据库超级无赖的具有了无敌的特性:数据表的编码是Latin1-swXXXX什么的。而保存在里面的中文又是php强制以utf8保存在其中。因此,出了各种乱七八糟的怪里怪气的毛病。让我等对于MySQL这种数据库本就没有什么爱的人深感恶心。

  因此,今日在研究之下终于解决此问题。再次说明,本文是把latin1转为utf8。

  问题的核心还是在于要改变已有保存字符的混乱问题,最彻底和便捷的方法就是直接导出,然后再以对应所需的字符导入。

  为了能够正确的导入,我们必须要确保导出的数据在你的文字编辑器下能够正常显示中文。对于我们这次的这个数据库,我们最终的导出语句是:

view plaincopy to clipboardPRint?
/usr/local/mysql/bin/mysqldump -p --opt --default-character-set=latin1  sends> /home/test/sends.sql 
/usr/local/mysql/bin/mysqldump -p --opt --default-character-set=latin1  sends> /home/test/sends.sql

  导出后你就自觉的先看看中文显示正不正常吧,如果不正常就回去改个编码继续导。。。。

  如果正常,继续:

  现在要准备导入,但是导入的工作之前有个预备工作要做,如果你之前只导出一个表。那修改你导出的文件中的这一行:

view plaincopy to clipboardprint?
/*!40101 SET NAMES latin1 */;  
 
成为  
 
/*!40101 SET NAMES utf8 */; 
/*!40101 SET NAMES latin1 */;

成为

/*!40101 SET NAMES utf8 */;
 

  如果不幸你导出的是整个有很多不同编码的数据表的数据库,ok。请使用替换工具把原来有的各种编码都替换成你要的目的编码。我这里原来有utf8和latin1,所以只需要把Latin1全部替换成utf8即可。

  之后新建一个要导入数据的数据库:

view plaincopy to clipboardprint?
mysql> create database `TARGET_DB` default character set utf8 collate utf8_general_ci 
mysql> create database `TARGET_DB` default character set utf8 collate utf8_general_ci

  OK,现在可以导入数据表了:

view plaincopy to clipboardprint?
mysql -uroot -p TARGET_DB --default-character-set=utf8 < /home/test/sends.sql 
mysql -uroot -p TARGET_DB --default-character-set=utf8 < /home/test/sends.sql

  这样,导回去以后世界就清静了。回顾以前,原来一直不大成功都是因为我们没有去

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号