Discuz!4.0及以上版本由UTF8转GBK的详细教程【告别乱码,拥抱插件】
经测试,此教程完全适用于Discuz4.0以上版本(包括Discuz4.0)!
谨以此文献给因UTF8编码不能使用插件、不能安装特效、经常出现乱码、rss不能正常显示、郁闷至极的朋友们。
Section I 盾与矛:为啥要转换?
有很大一部分朋友在选择安装Discuz并不知道安装什么编码版本才合适,这里我把对这两个编码的理解和大家分享
引用:
1、从数据库的尺寸上看,UTF8要大于GBK,20M的UTF8转成GBK后大概为16-17M
2、从论坛插件的支持上看,Discuz的拥戴者制作的插件基本上都是针对GBK的,UTF8的极少
3、从搜索引擎上看,MSN、YAHOO比较喜欢UTF8,会收录更快一些,因为它是国际上通用的编码,百度、google基本不受影响
4、从用户使用上看,UTF8更加适合欧洲、北美、香港用户通过FIREFOX等外国流行的浏览器浏览,GBK更适合大陆用户浏览
5、Discuz!官方推荐安装使用的是GBK
从上面可以看出,UTF8更适合外国朋友居多且不需太多要插件的论坛。GBK更适合普通一般的中国大陆用户。至于有些朋友说UTF8比GBK承载能力更佳,我使用了这么长时间,并没有感觉到有什么不同。
Section II 迷尘恋雾
转换过程貌似很复杂、很有难度,其实不然,出现错误的情况大多是由于人工失误、对MYSQL版本的不熟悉以及初次转换的懵懂、不感冒引起的,除了下面进行的详尽的分析之外,最后我还会列出一些常见失误和错误提示及解决方法,供大家对比参照。
Section III GBK也疯狂:插件我来了,乱码goodbye
引用:
手把手教您转换编码,请按下面的步骤step by step,祝您成功!
转换总共包括两个部分:数据库编码的转换和论坛文件的备份
一、关于数据库的备份和编码转换的过程
1、首先进入后台-数据库-资料备份
数据备份类型里选择 全部备份
数据备份方式里选择默认Discuz! 分卷备份 - 文件长度限制(kb)即可,包的大小自己设置
引用:
数据备份选项里(重要)
其他不要设置,主要看“ 建表语句格式”,这里有两个选项
※MySQL 3.23/4.0.x ※MySQL 4.1.x/5.x
MySQL建表语言在4.0.x-4.1.x做了修改,所以这里[一定要注意正确的选择备份方式]
对于在原空间进行转换的朋友,这点可以忽略不计。
对于论坛搬家的朋友,Discuz! 提供了这样优秀的备份选项,一定要充分利用起来,在搬家前一定要检查新、旧服务器的MYSQL版本!
至于MySQL版本在新旧空间里在哪查看,其实很简单,在后台首页里就有,如下图:
2、提交,开始备份并完成备份。
3、利用ConvertZ工具对数据库编码进行转换
引用:
Step1. 下载附件中的文件 ConvertZ.part1-part2.rar,解压缩到任意文件夹(自己取)
Step2. 打开此附件,双击ConvertZ.EXE运行
Step3. 见图说明
Step4. 见图说明
4、将转好的GBK数据库保存好,备用。
二、进行文件备份,也就是下载到本地(这里要备份的文件包括关系用户组头像的customavatars文件夹,论坛附件的attachments文件夹,论坛图片文件images文件夹及论坛风格模板文件templates文件夹,共四个,其他所有文件均可以删除不要)
templates文件夹要特别说明一下,要备份的是除原来的default(默认模板)的其他所有模板文件夹,因为default是包含语言包的,我们到时候会上传新的GBK的default(默认模板),所以原来的这个不要,很重要,切记。
上面的重头戏完成了,下面的就简单多了
引用:
1、保证全部文件备完之后,清除老空间的所有文件!(新空间不需要这一步,但请确认新空间是否正常运行,环境是否配置正确)
2、上传一个全新的Discuz!GBK编码论坛程序,进行安装。
3、安装成功后,将第一步中转换好的GBK数据库包全部通过FTP上传到论坛的forumdata文件夹下
4、进入新论坛后台-数据库-资料恢复-找到1号包-导入,1号包导完后会退出论坛(因为第一个包里含有原论坛的会员信息),这个时候你用原来论坛的管理员帐号密码即可登陆,继续完成导入,全部顺利导入则数据库恢复成功。
你可以进论坛前台,现在主题、贴子都能显示,但是附件和会员的头像不可见,需要进行下一步。
5、上传第二步开头备份的所有四个文件夹到论坛根目录下,进入后台,更新缓存,不相信自己的眼睛?已经转换成功了!
Section IV 不要小看阴沟里翻船?常见问题Q&A
引用:
q1:为什么导入数据库导到一半就不能继续下去,有如下的提示?
Discuz! info: MySQL Query Error
User: discuz
Time: 2006-5-17 6:40pm
Script: /admincp.php
SQL: INSERT INTO cdb_members VALUES('121','?ۨ??'262a9631938f60f88df0c2618981af64','58e9b7f9','0','0','10','0','','218.17.205.144','1145935498','','1145935498','1145935498','1145935525','1','0','0','0','2','2','0','0','0','0','0','0','0','0','htbyc@gqvbs.com','0000-00-00','0','0','0','0','','12','0','0','1','0','+8','0','0')
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '262a9631938f60f88df0c2618981af64','58e9b7f9','0','0','10','0','','218.17.205.144' at line 1
Errno.: 1064
Similar error report has beed dispatched to administrator before.
答:这是语法错误,请在出错的sql(不能导入的那一卷)文件里仔细检查:
1、会员名是否出现乱码
2、帖子是否出现乱码
3、是否有不符合要求的字符出现
解决方法:根据错误提示在错误的sql卷里用查找找到出错的语句(如上面的提示就是“262a9631938f60f88df0c2618981af64”),手动删除,再上传至服务器重新导入,删除错误语句时注意语法结构,以删除整句为佳。
引用:
q2:导入数据正常,为什么论坛全是"??????"?
答:请注意MYSQL版本是否正确,详情见上面一、关于数据库的备份和编码转换的过程中的MYSQL版本部分
引用:
q3:转换好之后在使用论坛的过程中提示1062错误?
答:这是由于数据表没有添加Auto的缘故,解决方法可以看agfx版主所著的
点我查看:出现 Errno: 1062 的解决方法
引用:
q4:转换好之后发现所有用户的签名突然不能显示了!
答:请在发帖子时将使用个人签名勾上。
引用:
q5:转换好之后进入主题后最上方有这样的提示!
Warning: Invalid argument supplied for foreach() in e:\www\hz\jackiwen\wwwroot\bbs\viewthread.php on line 157
解决方法:进入后台-Discuz! 选项-积分设置-扩展积分设置,将您论坛曾用过的积分的选项勾上。
Section V 致谢&支持
以上是自己在成功转换及多次帮Discuz!的友人们转换时得出的经验,技术含量不高,大家将就着看,曾经答应过和Discuz!同仁们分享经验(前一段时间考试,实在没空),所以今天花了5个小时折腾出来了,希望对大家有所帮助。
在我身陷UTF8泥足时候曾得到了@鑫~#, asdf1999, agfx(排名不分先后)三位版主的帮助,非常感谢。
最后特别声明一下:文章是我自己写的,写的不好,但是未经我的允许,请不要私自转载,若转,一定要注明版权所有者名字及出处,谢谢!
泉州下班网------www.qzxiaban.cn