如果没有猜错,应该大部分人都用了国外的免费空间。很多人抱怨国外的免费空间,虽然能支持中文(GBK)论坛安装,但是一安装插件,涉及到数据库写的时候,马上乱码就来了。许多人在抱怨插件作者怎么怎么的~
那个时候自己还不懂SQL命令,也在一直纳闷为什么论坛支持中文编码,凭什么插件不支持中文编码?随着自己对SQL命令的一点点的接触,我对照了官方的数据库升级和创建命令,同时对照了插件安装文件的数据库升级命令,才明白了一个原因,大部分插件作者都忽略了一个问题,接下来我会慢慢说明~
例如下面的插件,安装了,凡是有数据库读写的地方,肯定会出现乱码。
这是一个音乐播放器的升级文件中,执行SQL数据库命令的地方:
- DROP TABLE IF EXISTS cdb_p_music;;
- CREATE TABLE cdb_p_music (
- id smallint(6) unsigned NOT NULL auto_increment,
- displayorder tinyint(3) NOT NULL default '0',
- name varchar(100) NOT NULL default '',
- url varchar(100) NOT NULL default '',
- PRIMARY KEY (id)
- ) TYPE=MyISAM;;
- INSERT INTO `cdb_plugins` VALUES ('', 1, 1, '音乐列表', 'music', '音乐播放器音乐列表管理', 'p_music', 'music/', 'Designed by LFLY1573', 'a:1:{i:0;a:4:{s:4:"name";s:5:"music";s:4:"menu";s:12:"音乐列表管理";s:4:"type";s:1:"3";s:7:"adminid";i:1;}}');;
- EOT;
复制代码
这样在部分国外空间安装能不出现乱码?
其中你会找到) TYPE=MyISAM;;这一句吧,如果对照过官方文件,你会感觉少了什么吧。
看出来了吧,就是指定数据库编码的那一小句CHARSET=gbk。
把) TYPE=MyISAM 修改成) TYPE=MyISAM CHARSET=gbk;;就不会有乱码了(前提是你所用的DISCUZ!为GBK版本)
也就是把这个SQL命令修改成:
- DROP TABLE IF EXISTS cdb_p_music;;
- CREATE TABLE cdb_p_music (
- id smallint(6) unsigned NOT NULL auto_increment,
- displayorder tinyint(3) NOT NULL default '0',
- name varchar(100) NOT NULL default '',
- url varchar(100) NOT NULL default '',
- PRIMARY KEY (id)
- ) TYPE=MyISAM CHARSET=gbk;;
- INSERT INTO `cdb_plugins` VALUES ('', 1, 1, '音乐列表', 'music', '音乐播放器音乐列表管理', 'p_music', 'music/', 'Designed by LFLY1573', 'a:1:{i:0;a:4:{s:4:"name";s:5:"music";s:4:"menu";s:12:"音乐列表管理";s:4:"type";s:1:"3";s:7:"adminid";i:1;}}');;
- EOT;
复制代码
高手们应该明白了我的意思吧,可以直接看最后了,下面是我为新手解释下解决办法。
以后有谁安装插件出现乱码的,都这样修改,绝对没有乱码,同时不会对安装和使用有任何影响(前提你的论坛是GBK编码的):
一般找到插件的安装文件,如setup.php,install.php等等的~
1、找到:
修改成:
- ) TYPE=MyISAM CHARSET=gbk;;
复制代码
2、如果找不到上面的,按照下面改。
找到 :
替换成:
- PRIMARY KEY (id)
- ) TYPE=MyISAM CHARSET=gbk;;
复制代码
这样一般的插件安装都不会出现乱码了,包你满意。所有测试均通过,可以放心地改。
应该还有个一劳永逸的方法,可惜那个SQL命令无效,先不说了。
但是一般多语言插件的作者都能考虑这个编码问题了~所以一般多语言插件不会有这个问题。
转入正题了,插件作者能否也加上CHARSET=gbk这一小段呢?如果说DZ还有很多语言版本的,里面的gbk是可以替换的,记得以前银行发布后,经常有人提问为什么查看记录的时候,中文ID会显示为乱码。
希望以后插件作者写插件的时候,能考虑下这个问题,尽量做到完美。每一种语言版本单独写个安装文件~
以上是我的比较片面的看法,希望插件作者能考虑下,写出更完美的插件;当然也希望对新手有帮助,尽量让编码问题成为一个历史吧~
——完——
[ 本帖最后由 sw08 于 2006-4-8 17:38 编辑 ] |