登录 注册

登录

问题 Joomla 1.0.12 中文版安装,彻底解决乱码问题

更多
2007年04月12日 16:46 - 2007年04月14日 12:14 #1 作者: guodongzhao
摘自:苏武的BLOG zhangxueqing.blog.sohu.com/41701091.html

今天是个好日子,继刚刚发布的《Joomla_1.0.12安装手记》之后,本来想休息一下,再研究该安装手记中未解决的问题,即初始安装Joomla 1.0.12 中文版,彻底解决乱码问题,下午闲来无事,手痒,便决定趁热打铁,没想到很容易大功告成!

还是先说一下初始环境:

Windows平台+Apache2.0.55+php5.1.1+MySQL5.0.27+phpMyAdmin2.9.1.1+ZendOptimizer3.2.0+Joomla_1.0.12-RC1-Full_Package(Chinese).tar.gz

其中对于MySQL和phpMyAdmin的配置不再进行任何限制,而Joomla_1.0.12-RC1-Full_Package(Chinese).tar.gz文件可以到Joomla台湾站点去下载,这里提供一个链接: rt.openfoundry.org/Foundry/Project/Download/Attachment/84570/58556/Joomla_1.0.12-RC1-Full_Package(Chinese).tar.gz

下面说一下安装过程:

1、下载Joomla_1.0.12-RC1-Full_Package(Chinese).tar.gz文件,解压缩到站点的一个文件夹下,比如是joomla文件夹。

2、修改includes文件夹下的database.php文件,找到该行:

//@mysql_query("SET NAMES 'utf8'", $this->_resource);

在其下加入如下两行:

@mysql_query("SET NAMES 'utf8'", $this->_resource);
@mysql_query("SET CHARACTER SET UTF8", $this->_resource);

存盘,切记要用UltraEdit打开,且不要修改该文件的编码格式,以下的修改皆如此!

2、修改installation/sql/sql_simplified_chinese文件夹下的joomla.sql文件(假设joomla安装时选择的是简体中文,如果要选择其它语言安装,则同样的方式修改相应语言文件夹下的文件),寻找关键字#__poll_data,在其下大约是第六行,可以看到如下:

`text` text NOT NULL default '',

把它修改为:

`text` text NOT NULL,

在该文件内进行以下全局替换,把:

TYPE=MyISAM

替换为:

TYPE=MyISAM CHARSET=utf8

寻找关键字#__core_acl_aro,修改以下行:

CREATE TABLE `#__core_acl_aro` (
  `aro_id` int(11) NOT NULL auto_increment,
  `section_value` varchar(240) NOT NULL default '0',
  `value` varchar(240) NOT NULL default '',
  `order_value` int(11) NOT NULL default '0',
  `name` varchar(255) NOT NULL default '',
  `hidden` int(11) NOT NULL default '0',
  PRIMARY KEY  (`aro_id`),
  UNIQUE KEY `section_value_value_aro` (`section_value`,`value`),
  UNIQUE KEY `#__gacl_section_value_value_aro` (`section_value`,`value`),
  KEY `hidden_aro` (`hidden`),
  KEY `#__gacl_hidden_aro` (`hidden`)
) TYPE=MyISAM CHARSET=utf8;

改为:

CREATE TABLE `#__core_acl_aro` (
  `aro_id` int(11) NOT NULL auto_increment,
  `section_value` varchar(240) NOT NULL default '0',
  `value` varchar(240) NOT NULL default '',
  `order_value` int(11) NOT NULL default '0',
  `name` varchar(255) NOT NULL default '',
  `hidden` int(11) NOT NULL default '0',
  PRIMARY KEY  (`aro_id`),
#  UNIQUE KEY `section_value_value_aro` (`section_value`,`value`),
#  UNIQUE KEY `#__gacl_section_value_value_aro` (`section_value`,`value`),
  KEY `hidden_aro` (`hidden`),
  KEY `#__gacl_hidden_aro` (`hidden`)
) TYPE=MyISAM CHARSET=utf8;

ALTER TABLE `#__core_acl_aro` CHANGE `section_value` `section_value` VARCHAR( 240 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL default '0';
ALTER TABLE `#__core_acl_aro` CHANGE `value` `value` VARCHAR( 240 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL default '';
ALTER TABLE `#__core_acl_aro` ADD UNIQUE `section_value_value_aro` ( `section_value` , `value` );
ALTER TABLE `#__core_acl_aro` ADD UNIQUE `#__gacl_section_value_value_aro` (`section_value`,`value`);


存盘!

3、修改installation/sql/sql_simplified_chinese文件夹下的sample_data.sql文件,查找关键字#__contact_details,找到该行:

INSERT INTO `#__contact_details` VALUES (1, '姓名', '职称', '住址', '市/镇', '省/市', '国家/地区', '邮递区号', '电话', '传真', '其它连络资讯', 'asterisk.png', 'top', '这个 E-mail 受反垃圾邮件程序保护,您需要启用 JavaScript 才能查看。', 1, 1, 0, '0000-00-00 00:00:00', 1, '', 0, 12, 0);

改为:

INSERT INTO `#__contact_details` VALUES (1, '姓名', '职称', '住址', '市/镇', '省/市', '国家/地区', '区号', '电话', '传真', '其它连络资讯', 'asterisk.png', 'top', '这个 E-mail 受反垃圾邮件程序保护,您需要启用 JavaScript 才能查看。', 1, 1, 0, '0000-00-00 00:00:00', 1, '', 0, 12, 0);

其实只是把其中的“邮递区号”改为“区号”!

存盘!

4、进入到phpMyAdmin中,建立一个数据库,比如是joomla,其中字元整理选择utf8_general_ci

5、开始安装Joomla,根据安装向导一步一步进行,当要选择数据库名称时,输入第4步建立的数据库名即可。

结束语:

安装joomla是一件闹心的过程,经过多次实践,终于完成,感谢在网上提供了很多文章和帮助的网友,自己的心得也不能独享,奉献给大家!

现在回想起来,其实都是MySQL和phpMyAdmin的字元校正闹的,按照以上步骤安装,joomla的数据库编码格式是utf8的,而且也不再用修改phpMyAdmin的配置,在phpMyAdmin下能够看到joomla数据能够正常显示,也可以用phpMyAdmin正常地导入和导出,joomla前台显示也完全正常!省去了以后的很多麻烦!

补充:

为了方便一些像我一样的懒友,下面提供以上修改过的文件,只要用的是和我一样的joomla版本,只要把它们复制到相应的文件夹即可:

补充2:

感谢大家的鼓励,希望一起为开源事业努力,先前传的附件确实有问题,应该是中文文件名的缘故,我又重新打包上传了一个,原来的已经删除!谢谢指正!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年04月12日 20:33 #2 作者: Joomla之门
顶! 你太有才了!

我们一直没有解决这个“数据库乱码”的问题,今天终于看到了曙光——即使是你帖子中提到的台湾版中文Joomla竟然也没有解决啊。

刚刚还去看了一下阁下的Blog,非常漂亮,文章也不错。看来你对MySQL数据库驾轻就熟。希望对Joomla继续做出改进。我将尝试按照你的方法改造英文版制作新的utf-8特别版。

再次感谢!

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年04月13日 14:02 #3 作者: suzeb
LZ的附件好像有问题,不能解压,我这里有一份修改好的,可以直接解压覆盖原文件

忘记说了,这是简体中文的,按照LZ的要求用UltraEdit修改,只适合Joomla_1.0.12-RC1-Full_Package(Chinese)

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年04月14日 12:23 #4 作者: guodongzhao
谢谢建鹏兄的夸奖,以前没有发现该站上的joomla utf8特别版,昨天才看到,试了一下,真的很好,虽然后台是英文的,但只要已经对joomla的管理比较了解,用起来应该不是问题,而且只要像本人拙文中提到的,先在phpMyAdmin中建立一个utf8的数据库,然后修改一下database.php文件,其它的修改都不需要,即可完美解决乱码问题,真的很方便!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年04月15日 11:57 #5 作者: lechong1
这个方法能否用在白老大制作好的“Joomla 1.0.12 utf-8 前台汉化特别版。”上?
谢谢 :)

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年04月17日 14:33 #6 作者: Joomla之门
guodongzhao 的首帖中说道:

2、修改installation/sql/sql_simplified_chinese文件夹下的joomla.sql文件(假设joomla安装时选择的是简体中文,如果要选择其它语言安装,则同样的方式修改相应语言文件夹下的文件),寻找关键字#__poll_data,在其下大约是第六行,可以看到如下:

`text` text NOT NULL default '',

把它修改为:

`text` text NOT NULL,



我今天测试用 Joomla 1.0.12 英文 UTF-8 前台汉化特别版采用上述方法改造。但是执行到上面所说的第二步,在 joomla.sql 文件中没有找到 `text` text NOT NULL default '',这句,而是在498行找到了:

`text` text NOT NULL,

看起来不用修改,是吧?其他操作严格按照guodongzhao的方法,但是最后安装时到了“Enter the name of your Joomla! site:”这一步没有出现输入站点名称的输入框,而是提示错误:

SQL=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 \'NULL£¬\n  `hits` int(11) NOT NULL default \'0\',\n  PRIMARY KEY  (`id`),\n  KEY `poll\' at line 6 SQL=# Table structure for table `jos_poll_data`\n\nCREATE TABLE `jos_poll_data` (\n  `id` int(11) NOT NULL auto_increment,\n  `pollid` int(4) NOT NULL default \'0\',\n  `text` text NOT NULL£¬\n  `hits` int(11) NOT NULL default \'0\',\n  PRIMARY KEY  (`id`),\n  KEY `pollid` (`pollid`,`text`(1))\n) TYPE=MyISAM CHARSET=utf8:
- - - - - - - - - -
# Table structure for table `#__poll_data`

CREATE TABLE `#__poll_data` (
  `id` int(11) NOT NULL auto_increment,
  `pollid` int(4) NOT NULL default '0',
  `text` text NOT NULL£¬
  `hits` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `pollid` (`pollid`,`text`(1))
) TYPE=MyISAM CHARSET=utf8
= = = = = = = = = =

SQL=Table \'newtest12.jos_poll_data\' doesn\'t exist SQL=# Dumping data for table `jos_poll_data`\n\nINSERT INTO `jos_poll_data` VALUES (1, 14, \'Absolutely simple\', 1):
- - - - - - - - - -
# Dumping data for table `#__poll_data`

INSERT INTO `#__poll_data` VALUES (1, 14, 'Absolutely simple', 1)
= = = = = = = = = =

SQL=Table \'newtest12.jos_poll_data\' doesn\'t exist SQL=INSERT INTO `jos_poll_data` VALUES (2, 14, \'Reasonably easy\', 0):
- - - - - - - - - -
INSERT INTO `#__poll_data` VALUES (2, 14, 'Reasonably easy', 0)
= = = = = = = = = =

SQL=Table \'newtest12.jos_poll_data\' doesn\'t exist SQL=INSERT INTO `jos_poll_data` VALUES (3, 14, \'Not straight-forward but I worked it out\', 0):
- - - - - - - - - -
INSERT INTO `#__poll_data` VALUES (3, 14, 'Not straight-forward but I worked it out', 0)
= = = = = = = = = =

SQL=Table \'newtest12.jos_poll_data\' doesn\'t exist SQL=INSERT INTO `jos_poll_data` VALUES (4, 14, \'I had to install extra server stuff\', 0):
- - - - - - - - - -
INSERT INTO `#__poll_data` VALUES (4, 14, 'I had to install extra server stuff', 0)
= = = = = = = = = =

SQL=Table \'newtest12.jos_poll_data\' doesn\'t exist SQL=INSERT INTO `jos_poll_data` VALUES (5, 14, \'I had no idea and got my friend to do it\', 0):
- - - - - - - - - -
INSERT INTO `#__poll_data` VALUES (5, 14, 'I had no idea and got my friend to do it', 0)
= = = = = = = = = =

SQL=Table \'newtest12.jos_poll_data\' doesn\'t exist SQL=INSERT INTO `jos_poll_data` VALUES (6, 14, \'My dog ran away with the README ...\', 0):
- - - - - - - - - -
INSERT INTO `#__poll_data` VALUES (6, 14, 'My dog ran away with the README ...', 0)
= = = = = = = = = =

SQL=Table \'newtest12.jos_poll_data\' doesn\'t exist SQL=INSERT INTO `jos_poll_data` VALUES (7, 14, \'\', 0):
- - - - - - - - - -
INSERT INTO `#__poll_data` VALUES (7, 14, '', 0)
= = = = = = = = = =

SQL=Table \'newtest12.jos_poll_data\' doesn\'t exist SQL=INSERT INTO `jos_poll_data` VALUES (8, 14, \'\', 0):
- - - - - - - - - -
INSERT INTO `#__poll_data` VALUES (8, 14, '', 0)
= = = = = = = = = =

SQL=Table \'newtest12.jos_poll_data\' doesn\'t exist SQL=INSERT INTO `jos_poll_data` VALUES (9, 14, \'\', 0):
- - - - - - - - - -
INSERT INTO `#__poll_data` VALUES (9, 14, '', 0)
= = = = = = = = = =

SQL=Table \'newtest12.jos_poll_data\' doesn\'t exist SQL=INSERT INTO `jos_poll_data` VALUES (10, 14, \'\', 0):
- - - - - - - - - -
INSERT INTO `#__poll_data` VALUES (10, 14, '', 0)
= = = = = = = = = =

SQL=Table \'newtest12.jos_poll_data\' doesn\'t exist SQL=INSERT INTO `jos_poll_data` VALUES (11, 14, \'\', 0):
- - - - - - - - - -
INSERT INTO `#__poll_data` VALUES (11, 14, '', 0)
= = = = = = = = = =

SQL=Table \'newtest12.jos_poll_data\' doesn\'t exist SQL=INSERT INTO `jos_poll_data` VALUES (12, 14, \'\', 0):
- - - - - - - - - -
INSERT INTO `#__poll_data` VALUES (12, 14, '', 0)
= = = = = = = = = =


请问这是为何?

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年04月22日 13:57 #7 作者: guodongzhao
看了楼上的回复,其中你贴的错误提示中有这么几行:

CREATE TABLE `#__poll_data` (
  `id` int(11) NOT NULL auto_increment,
  `pollid` int(4) NOT NULL default '0',
  `text` text NOT NULL£¬
  `hits` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `pollid` (`pollid`,`text`(1))
) TYPE=MyISAM CHARSET=utf8

这是要建立的jos_poll_data表的结构,其中的一行是:

`text` text NOT NULL£¬

应该看到在结尾处有乱码,这一行正常情况应该是:

`text` text NOT NULL,

我想问题就出现在这里,你可以用UltrEdit打开 joomla.sql 文件,按照本帖的方法找到这一行:

`text` text NOT NULL,

看看是否该处有乱码,或者干脆重写这一行,然后以utf8编码再保存一遍,问题应该能解决!

或者下载本帖的附件,用附件中的joomla.sql文件!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年04月22日 18:10 #8 作者: Joomla之门
是的,我使用了你附件中的文件,现在彻底搞定了!

下载栏目已经更新,现在的 Joomla 1.0.12 英文utf-8特别版 可以彻底告别乱码了!

感谢 guodongzhao 的帮助!

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年04月23日 17:19 #9 作者: lechong1

进入到phpMyAdmin中,建立一个数据库,比如是joomla,其中字元整理选择utf8_general_ci


请教一个phpmyadmin的问题,
我使用的主机服务商提供的虚拟主机,数据库名称已经指定并存在了,我没有权限通过phpmyadmin建立数据库,那么,字元整理该怎么做?
谢谢~~ :)

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年04月23日 17:30 #10 作者: Joomla之门
呵呵,那么你当然没有权限去进行字元整理了。跟你的空间提供商联系,让他们必须按照你的意图去进行字元整理,否则你要么接受现状,要么另换主机。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年04月23日 17:46 #11 作者: lechong1
字元整理选择utf8_general_ci

是否意味着,我不提出的话,已有数据库字元肯定不是utf8_general_ci?
或者怎样查看现有数据库的字元编码?
谢谢 :)

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年04月23日 18:07 #12 作者: Joomla之门
如果你不提出,未必不是utf-8,只是无法确认。

至于怎么查,我确实没有研究过。不过,难道给空间提供商直接发个e-mail询问一下不算一种方法吗?

最好跟空间提供商提前沟通好,以免安装环境不够优化。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年05月02日 12:35 #13 作者: wchfei
我在台湾joomla下载了最新的1.0.12稳定版本,同时数据库是mysql 5.0.27,php 5.2+apache 2.24+windows xp
安装之前我修改了一些配置:
1、修改php.ini
增加extension=php_mysqli.dll
去除extension=php_mysql.dll
2、将database.php更名为database_bake.php,将database.mysqli.php更名为database.php
3、将installation\index.php中184行的function_exists( 'mysql_connect' )改为function_exists( 'mysqli_connect' )

整个安装过程都非常顺利,而且浏览都没有出现乱码,但是我使用phpmyadmin 2.9,登陆时使用simpled_chinesed_utf字符登陆,却看到数据库中的数据全是乱码。
我安装mysql 5.0.27时字符集选择的是utf8。

最新稳定版本有关的一些joomla.sql都作了和你差不多的修改。

大家有什么解决办法

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年05月03日 19:29 #14 作者: wchfei
该问题我已经解决,目前joomla 1.0.12中文稳定版本安装在mysql 4.1以上是没有问题的了,问题是数据库出现乱码,乱码的解决办法是在我上面步骤地基础上在database.php的90行加入@mysqli_query($this->_resource, "SET NAMES 'utf8'");

乱码问题解决。

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年06月14日 23:22 #15 作者: tulga
我的joomla站前台和后台的文章标题的中文都是“????”,如何解决呢??
大家帮帮我吧 ??? ???

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年06月14日 23:36 #16 作者: Joomla之门
你的很可能是由于模板文件选择了不正确的语言编码。如果你网站使用utf-8编码,请将当前模板的 index.php 文件中对应语句修改过来,详情参看 《英文版Joomla完美支持中文的解决之道》

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年07月14日 01:19 #17 作者: walkerhxg
请问已经安装好的网站该怎么修改,有没有补救的措施呢?installation文件夹已经被删除了的,没法照楼主的方法修改,难道要重装一次?

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年07月15日 08:36 #18 作者: Joomla之门
如果网站已经安装,恐怕比较难处理,但是仍然有可能。

我没有这样做过,不过我估计应该这样做:

0、首先备份整个网站的web空间和数据库。
1、把web空间的文件,也就是Joomla的核心文件,按照上述方法修改;
2、通过 MySQL 的远程访问,以命令行方式操作,将原来的数据库及数据表、数据的语言编码都调整一致为utf-8。
3、打开网站前台测试。

其中第二条涉及到用户的权限,有些空间商不允许站长以命令行模式访问自己的数据库,只能在phpMyAdmin里面看看。例如,我购买的“盘古”空间就没有这个权限。所以我的一个网站现在想这么操作来修正编码问题,却无法实现。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论