数据库乱码的解决

TC16年前 (2010-09-04)网站与博客686
smf在前台一切正常,但数据库中的却是乱码。
很个性的乱码。

同在一个数据库的wordpress却显示正常。

我所认为的原因在于,wp是utf8编码,也就是数据库、表、程序所用的字符编码是一致的。
而smf却不同。
下图前两行就是wp的表,后面的则是smf表格。

早期smf对utf8编码支持不佳,记得当年换主机的时候(似乎是ix换到网元那会儿),smf的编码问题很是费了subaru一番功夫,还去请教小月(没错,做自制关卡的那个小月)和小月熟识的数据库高手。
问题似乎是,两个主机的数据库编码一个是用了latin1,一个却是utf8,导致从一个数据库中导出的数据,导入另一个数据库之后,不仅数据库中是乱码,就是前台也显示了乱码。
最后到底是怎么解决的,不知subaru还记不记得……
我只记得当初dump来dump去的,搞得即使我没有参与具体操作,也觉得subaru很辛苦==
最早使用的bmf论坛那些数据,也是subaru后来转到smf论坛格式导入的。
因为前台显示正常,也就一直没去看数据库。我也是才发现,数据库中的论坛数据还是乱码(这都多少年了才发现==)
smf后续版本中,对utf8已经支持得很好了,至少2.0版本在全新安装时还有个“强制设定数据库编码为UFT8”的设置。
但中文站的论坛是从smf1.X逐步升级上来的,数据库编码一直就是latin1。
所以解决数据库乱码问题,我的第一个思路就是把smf表的字符集转到utf8。
而且还得是最偷懒的方法(我的属性使然……);也不能涉及服务器端的修改(我的权限不够)。
所以,类似导出smf表然后在本地修改后再导入,或者是在服务器上修改ini设置和动用mysql命令等等,就暂时不考虑了。
这回不敢不备份了,数据库完了就真的全完了……
WordPress以前也有编码问题,这里有个latin1到utf8的转换插件,smf当然是不能用的。
不过,从这个插件代码里可以看到,它是如何把数据库表转换为utf8的。
// Change all text/string fields of the tables to their corresponding binary text/string representations.
foreach ( (array) $tables as $table )
mysql_query("ALTER TABLE $table CONVERT TO CHARACTER SET binary", $link_id);
// Change database and tables to UTF-8 Character set.
mysql_query("ALTER DATABASE " . DB_NAME . " CHARACTER SET utf8", $link_id);
foreach ( (array) $tables as $table )
mysql_query("ALTER TABLE $table CONVERT TO CHARACTER SET utf8", $link_id);
前两步骤我并不需要,因为数据库已经是utf8编码了。
先拿membergroups测试一下。
ALTER TABLE 表前缀_membergroups CONVERT TO CHARACTER SET utf8
然后看了一下那个表,果然好了。

再看看数据库,意外发现居然这样一下就全搞定了==
不仅是membergroups,其他所有的表格也全都转换为utf8了……

这……
是不是顺利得有点过头了==

然后百度了一下“数据库乱码”,发现问题还不是一般的复杂==|||
而且这个帖子里提到的问题还和我这个很像(我没仔细看,不过5楼给的那个乱码和他所描述的情况可是跟我的一个模子里出来的)。
看来有问题并不总是应该先上搜索引擎的……

编辑:
经小小鸟的提醒,论坛数据库字符集修改之后,论坛前台全成了问号
这要用到smf自身的数据库管理功能。在论坛管理后台的论坛维护中有个设置论坛数据库为UTF8的选项,用那个修复一下即可
字符集问题解决后的意义之一,已在论坛发帖说明:。
标签: 百度空间smf

相关文章

WordPress数据库的清理

WordPress数据库的清理

WordPress逐渐在给新版本集成一些不实用的功能,比如修订、自动保存、回收站等等。这是很奇怪的事情,因为那些不能算是核心功能,本可以交给插件去实现的,现在却因为集成在wp中,容易造成数据库垃圾。清理插件生成的表格就不消说了,除了下面这几个,其他都不是wp的必需品,可删之。但除了会生成表格外,很多...

SMF Wiki

SMF Wiki

虽然这玩意儿貌似早就不更新了,不过有站点在用。收着留个底。http://www.linuxmintusers.de/index.php?action=wiki;page=Main_Pagehttp://los.turtleshellprod.com/index.php?action=wiki;pag...

BSP的RSS订阅

BSP的RSS订阅

刚才打开 G00gle Reader,又看到在新浪订阅的博客的更新。新浪大概能位列最小心眼的BSP之列了,到现在都不允许在阅读器里查看图片。在阅读器里看到这类“反盗”图,还是相当碍眼的。相比防止“流量”被消耗,新浪这样倒更像是防止“流量”损失。虽然“防盗”措施各大BSP都有(包括百度),但考虑到RS...

从迁徙的鸟到海中鸟

从迁徙的鸟到海中鸟

两年前在MSN开博的时候,对于博客的名字,很自然地选择了“迁徙的鸟”。2005 年暑假,正在等待法国高校的回音,我不知道要去哪里,又会学什么专业。我当时前途不定,又在法国游来荡去(我定下的目标,就是除了博士阶段在巴黎,其他时间一年换一个城市),故有迁徙一说。而“乌鸦”是从高中时起就一直追随着我的外号...

狡鸟三博

狡鸟三博

我用过的博客不止三个,但还会更新的是这三个:1、我这个QQ空间:几乎全部的博文,而且有越来越严重的“草稿化”、零碎化、随意化倾向。2、我的新浪博客:更新极少,都是正儿八经的东西,不带生活信息。目前为止,其中的文章QQ上全有,但以后如何不做保证。3、我的百度空间:关于古墓丽影的东西,不太涉猎其他,上面...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法和观点。