Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[已解决] 完美解决mysql数据库字符编码问题

[复制链接]
enhand 发表于 2010-5-24 10:27:01 | 显示全部楼层 |阅读模式

相信许多论坛的用户会发现,自己论坛的内容在phpmyadmin中浏览时中文全部是乱码,无法正常浏览。而且在那些数据表的结构中会发现其“整理”(也就是数据表的字符集)为latin1_swidish_ci



(菜鸟教程)

相信许多论坛的用户会发现,自己论坛的内容在phpmyadmin中浏览时中文全部是乱码,无法正常浏览。而且在那些数据表的结构中会发现其“整理”(也就是数据表的字符集)为latin1_swidish_ci。咦?我下载的明明是GBK编码的pw论坛安装程序啊,什么时候变成这个莫名其妙的瑞典文了?不过,当你把data/sql_config.php中的$charset='gbk'这一句的GBK删除,你的论坛即使使用latin1字符编码,已然可以正常使用,既然可以用,相信好多人也就不管这么多了,继续用下去喽。
IXDBA.NET社区论坛

不过问题就在,假如你日后扩展论坛的内容,需要整合一些GBK编码的插件或者程序,就会出现问题,无法使用,因为GBK编码的程序,是无法正常读取latin1编码的pw论坛数据库的,乱码大大地~~郁闷啊,从长远来看,为了大局,还是恢复pw数据库的处子之身比较稳妥啊~~

先简单说一下出现这种问题的原因,其实网上一搜一大堆的(对于菜鸟来说,最好的教程来自搜索引擎哦),既然我们菜,那就不拽那些复杂高深的XXX理论了,一言以蔽之,出现编码问题,就是因为mysql4.0版本前后所使用的默认字符集编码不一致,导致我们在升级mysql的时候没有注意或者说没有重视这极其重要的一点,结果在phpmyadmin中手动创建数据库时,没有将默认的latin1编码更改为正确的gbk编码,所以我们的数据库就一直默默的以错误的字符编码存在着~~好可怜的数据库啊,谁让你们的主人是我这样的菜鸟呢~

好了,现在我们的目的就是将数据库的编码从latin1改为gbk。什么?你惊喜的发现在phpmyadmin中可以手动修改数据表的编码?OK,恭喜你发现了phpmyadmin的强大,麻烦你顺便把每个数据表的每个字段的编码都要修改,恩,没多少,也就几百个吧~~什么?你真的这么去改了?晕~~你是我见过的最有恒心和时间的家伙~~~什么?改完了无法使用,依然是乱码。。。。呃~~我错了,光改表面的字符集,事实上数据没有经过mysql的编译,其内容是不会改变的,而且mysql一共有4个方面涉及到了字符集,dataserverclientconnection,你光改data是不成的哦~~。。。。。。别扁我别扁我~~~我也是刚上网搜索到的。。。我也是菜鸟啊,刚知道地~~~

嘿嘿,看来这招没有任何技术含量的操作是不可行的喽~众位菜弟弟菜妹妹菜帅哥菜美女,跟我来做step by step

第一步:备份数据库,什么?干什么用?我晕~~~这种做事不留后路的人,居然来做论坛?
既可以使用pw自带的后台程序进行备份,也可以直接在mysql/data/下面复制一个你的数据库,建议数据库较大的同志使用后者,方便哦~对了,不要忘了备份之前关闭论坛啊,关闭论坛之后,最好再做一下数据库修复和优化,还有,清除论坛中一些垃圾信息,比如前台后台管理日志,比如短消息等等,数据量越小,成功率就越高。

第二步:打开windows的命令行,鉴于菜也分等级,就把这个也写一下吧,我们不会歧视每一个菜鸟:开始-运行-输入cmd-回车
进入了命令行,再进入mysql的bin目录,我的是c:\mysql5.0\bin输入的命令如下:
C:\Documents and Settings\Administrator>cd c:\mysql5.0\bin
c:\mysql5.0\bin>

ok,进入了bin目录之后,就可以运行著名的mysqldump命令了,这是mysql自带的数据库备份程序,有N多参数可以使用,具体的可以找教科书学习一下,我只照葫芦画瓢的拿过来用,在命令行里面输入以下命令:
c:\mysql5.0\bin>mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt olddatabase > newdatabase.sql

讲解一下这行命令都做了什么:
-u 数据库的管理员用户名,这里是root

-p 数据库管理员密码,这里是

--default-character-set=latin1 这一句表示你要导出的这个数据库的字符编码是什么,是latin1还是utf8还是别的啥

--set-charset=gbk 这一句是指定导出的数据库文件是什么格式,你想要什么就写什么,咱们不是想转换成GBK吗,就写这个好了

--skip-opt 这句很有争议,使用这个参数会导致导出的数据库中缺少一些东西,只能手动加上,但我就是这么做的,已经成功了,所以纯菜鸟为了保证成功还是按照我这个来吧。一些高水平的朋友可以参考这篇文章进行尝试。

olddatabase 这就是你要导出的数据库名称了

newdatabase.sql 你要把数据库导出的文件名

ok,命令写上,敲回车,如果你数据库比较大,可能要稍微等一会。一会就会发现在你的bin

评分

1

查看全部评分

 楼主| enhand 发表于 2010-5-25 19:34:42 | 显示全部楼层
这个也不行啊!
回复

使用道具 举报

西域风 发表于 2010-5-25 22:19:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-6-16 06:29 , Processed in 0.101481 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表