mysql 转utf8_完美转换MySQL的字符集 解决查看utf8源文件中的乱码问题

完美转换MySQL的字符集 解决查看utf8源文件中的乱码问题

更新时间:2011年11月30日 16:40:21   作者:

本人转换过好多数据了,也用过了好多的办法,个人感觉最好用的就是使用MySQL命令导出导入中将字符集转换过去

MySQL从4.1版本开始才提出字符集的概念,所以对于MySQL4.0及其以下的版本,他们的字符集都是Latin1的,所以有时候需要对mysql的字符集进行一下转换,MySQL版本的升级、降级,特别是升级MySQL的版本,为了不让程序继续沿用Latin1字符集之后对以后Discuz!版本升级的影响和安装SupeSite,这就需要我们进行字符集的转换!

本人转换过好多数据了,也用过了好多的办法,个人感觉最好用的就是使用MySQL命令导出导入中将字符集转换过去!

现在我将用图文并茂的方式向大家展示一下如何将MySQL字符集进行转换,由于字符集比较多,现在主要举GBK和Latin1这两种字符集之间的转换!

首先我将讲解一下如何将MySQL从GBK转换为Latin1的(如果是UTF8或者BIG5转换即将GBK换成相应的字符集即可)!这种问题常发生在MySQL从MySQL4.1及其以上版本转换为

MySQL4.1以下的版本的过程中!有的人图个方便,特别是有主机权限的,直接将MySQL的data目录下的文件拷贝过去了,这样造成的问题就是乱码问题!当然我所说的这些都要求你必

须拥有主机权限,虚拟主机用户可以在本地搭建好论坛,下载数据到你的本地,然后把数据导入到你本地的数据库,然后进行字符集的转换!

现在的步骤就是将MySQL的数据导出了,在mysql的命令提示符下(linux系统为mysql的命令目录下),输入下面导出的命令:

mysqldump -uroot -p --default-character-set=gbk --set-charset=latin1 --compatible=mysql40 --skip-opt discuz>discuz.sql

如图1(windows下)和图2(linux下)所示

3016361561Z.jpg

3016362b017.jpg

这样就轻松的将数据从MySQL数据库中导出了,此时导出的文件在与mysql命令同级的目录下,即bin目录下,而且已经将MySQL字符集导出为Latin1的了!现在要做的就是将数据导

入MySQL4.0中去!

同样在4.0版本的mysql命令提示符下(linux系统为mysql的命令目录下),输入下面导入命令:

mysql -uroot -p --default-character-set=latin1 -f discuz

如图3(window下)和图4(linux下)所示

30163A2Cb.jpg

30163FE159.jpg

这样就将字符集从GBK转为Latin1同时将MySQL从4.1以上版本的转为MySQL4.0的了!

现在讲解一下如何从Latin1字符集转换为GBK的!

由于只有MySQL4.1以上的版本才有字符集的概念,所以如果你要将MySQL4.0的字符集从Latin1转换为GBK字符集的话,必须导入到MySQL4.1以上的版本中,然后再导出!这里面就多

了一个导出为Latin1的步骤!

同样在MySQL4.0的命令提示符下,输入下面导出的命令:

mysqldump -uroot -p --default-character-set=latin1 --set-charset=latin1 --skip-opt discuz>discuz.sql

然后导入到MySQL4.1中,输入下面导入的命令:

mysql -uroot -p --default-character-set=latin1 -f discuz

然后在MySQL4.1下转换字符集,分别输入下面导出和导入的命令:

mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt discuz>discuz.sql

mysql -uroot -p --default-character-set=gbk -f newdiscuz

如果不出问题的话,那么转换就完毕了!其实整个过程还是比较简单的,只是过程看起来比较麻烦些,但是过程却是很简单明了的!

下面举出一个在导入过程中极易容易出现的问题!

在导入的时候容易出现unknown command '/'这样的错误,其实这是由于MySQL在导出的时候,它有时候给一些繁体字后面自动加上了个反斜杠造成的!解决此问题的办法就是打开

备份的sql(这里为discuz.sql),提示错误的时候会提示具体哪行出现了错误,找到那行,把反斜杠去掉就行了!其实你可以用Ultraedit这些文本处理的工具,批量的去处理这些反斜杠

!凭个人经验,有很多用户名取的比较怪,这样就容易出现反斜杠,这样只要纠正那些用户名就行了!

以上是个人在转换数据过程中的一些经验之谈,很多地方还有待大家完善!

相关文章

1a1b05c64693fbf380aa1344a7812747.png

本节主要介绍了Mysql存储过程循环内如何嵌套使用游标,详细实现如下,需要的朋友不要错过2014-08-08

0ea3c7666119d5615e582f823fb3fad6.png

这篇文章主要介绍了Ubuntu16.04 server下配置MySQL,并开启远程连接的方法,非常具有实用价值,需要的朋友可以参考下。2017-01-01

4f96a78db829b1556ff16de21e013c7a.png

这篇文章主要介绍了MySQL 行锁和表锁的含义及区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-08-08

8cc1031babc6aff2319f1c6af8544aa0.png

这篇文章主要介绍了centos7环境下源码安装mysql5.7.16的方法,详细分析了centos7环境下MySQL安装的相关步骤、操作命令、配置方法与注意事项,需要的朋友可以参考下2020-02-02

0c932a99bb7b6f23c937db507070cc7b.png

在SQL语句中我们可能会经常混合使用到OR和AND,其中可能会出现一些小问题,下面小编来讲一讲它的使用技巧2019-05-05

cca732bf65a93ed2ec0ac80c638460fe.png

一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的,本操作是在WIN命令提示符下,感兴趣的朋友可以参考下2013-11-11

2d9f31f2af7b675a3d153d2b7f1035a7.png

这篇文章主要介绍了mysql 一次更新(update)多条记录的思路,需要的朋友可以参考下2014-06-06

b452cee8ec5cd9e58ab98eba17281e59.png

一般产生原因是手工更改my.ini的数据库文件存放地址导致的,大家可以参考下下面的方法2013-02-02

f4838ec7e2d4da28e0b57d4e852dadd4.png

这篇文章主要介绍了使用limit,offset分页场景时为什么会慢,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-11-11

最新评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值