请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Discuz! 官方站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Discuz! X 最新研发动态 通过这个窗口,关注跟踪我们的研发进展 Discuz! 开发技术文库 - 给官方提建议

Discuz! X2 正式版下载 帮助网站实现一站式服务  商业支持服务咨询 下载 - 安装 - 常见问题 - 转换 - 讨论 - 购买

2012站长年会开启报名 限量船票免费发放 Discuz!十大荣誉用户评选 - Discuz!NT3.6发布 漫游引入QQ空间游戏 -一骑新区横扫三国-5d6d免费论坛

查看: 74958|回复: 64

完美转换MySQL的字符集 [复制链接]

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

UID
263098
积分
10624
帖子
8177
威望
199
在线时间
1464 小时
注册时间
2005-10-20
发表于 2006-11-1 22:33:21 |显示全部楼层
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下)所示
    这样就轻松的将数据从MySQL数据库中导出了,此时导出的文件在与mysql命令同级的目录下,即bin目录下,而且已经将MySQL字符集导出为Latin1的了!现在要做的就是将数据导

入MySQL4.0中去!
    同样在4.0版本的mysql命令提示符下(linux系统为mysql的命令目录下),输入下面导入命令:
    mysql -uroot -p --default-character-set=latin1 -f discuz<discuz.sql
    如图3(window下)和图4(linux下)所示
    这样就将字符集从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<discuz.sql
    然后在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<discuz.sql
    如果不出问题的话,那么转换就完毕了!其实整个过程还是比较简单的,只是过程看起来比较麻烦些,但是过程却是很简单明了的!
    下面举出一个在导入过程中极易容易出现的问题!
    在导入的时候容易出现unknown command '/'这样的错误,其实这是由于MySQL在导出的时候,它有时候给一些繁体字后面自动加上了个反斜杠造成的!解决此问题的办法就是打开

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

!凭个人经验,有很多用户名取的比较怪,这样就容易出现反斜杠,这样只要纠正那些用户名就行了!
    以上是个人在转换数据过程中的一些经验之谈,很多地方还有待大家完善!

[ 本帖最后由 huangliming 于 2006-11-10 14:36 编辑 ]

图1

图1

图2

图2

图3

图3

图4

图4
已有 2 人评分威望 金币 收起 理由
郭鑫 + 10 + 10 好文章~!非常感谢~!
安笛 + 8 + 8 期待下一篇教程了~~:)

总评分: 威望 + 18  金币 + 10  + 8   查看全部评分

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

UID
263098
积分
10624
帖子
8177
威望
199
在线时间
1464 小时
注册时间
2005-10-20
发表于 2006-11-1 22:35:59 |显示全部楼层
由于时间比较仓促和水平有限,里面难免有些错误!有什么不懂或者发现里面的错误之处,请大家在后面的帖子中指出!对于不懂的或者转换的时候出现了错误,请回复,然后我会定期根据你们的实际情况做出解答!由于工作较忙,请勿pm我!

使用道具 举报

Rank: 6Rank: 6

UID
335813
积分
1038
帖子
422
威望
70
在线时间
0 小时
注册时间
2006-3-28
发表于 2006-11-1 23:44:17 |显示全部楼层
upup!!:)

使用道具 举报

Rank: 6Rank: 6

UID
285454
积分
2686
帖子
2929
威望
11
在线时间
14 小时
注册时间
2005-12-12
发表于 2006-11-3 02:09:07 |显示全部楼层
顶了

使用道具 举报

Forum Legend

Discuz! Helping Team A005

Rank: 8Rank: 8

UID
214682
积分
4113
帖子
4645
威望
7
在线时间
31 小时
注册时间
2005-6-28
发表于 2006-11-3 06:38:21 |显示全部楼层
经典
努力学习discuz系列产品 有意者Q聊 728264    discuz帮助群:34030203
很高兴认识了好兄弟:麻吉求求

使用道具 举报

Rank: 1

UID
413405
积分
43
帖子
94
威望
-5
在线时间
9 小时
注册时间
2006-8-4
发表于 2006-11-4 01:54:34 |显示全部楼层
顶一个。。。。。。

使用道具 举报

King

Discuz! Fans

Rank: 6Rank: 6

UID
186743
积分
2262
帖子
2474
威望
-1
在线时间
94 小时
注册时间
2005-4-3
发表于 2006-11-4 10:58:21 |显示全部楼层
:) :)

使用道具 举报

Rank: 7Rank: 7Rank: 7

UID
55892
积分
609
帖子
349
威望
0
在线时间
21 小时
注册时间
2004-2-4
发表于 2006-11-4 22:13:17 |显示全部楼层
3.23版本mysql能否采用此种方法?

[ 本帖最后由 xzwy 于 2006-11-4 22:26 编辑 ]
侯山窝十大杰出青年

使用道具 举报

Rank: 3Rank: 3

UID
210482
积分
425
帖子
484
威望
0
在线时间
19 小时
注册时间
2005-6-16
发表于 2006-11-6 03:00:15 |显示全部楼层
必须收藏!!!!

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

UID
263098
积分
10624
帖子
8177
威望
199
在线时间
1464 小时
注册时间
2005-10-20
发表于 2006-11-9 12:48:00 |显示全部楼层

回复 #8 xzwy 的帖子

可以,可以跟4.0一样看待!:)

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

fastpost

手机版|Archiver|北京康盛新创科技有限责任公司 ( 京ICP证110024号|京网文[2011]0019-007号 )  

GMT+8, 2012-2-13 05:37 , Processed in 0.197028 second(s), 18 queries , Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部