◆教你如何解決453h安裝在mysql 4.1 以上的UTF8數(shù)據(jù)庫中造成的亂碼和安裝失敗問題◆ 這幾天在嘗試安裝mambo 4.53h版, 由于我的數(shù)據(jù)庫是mysq4.1以上版本,并且設(shè)定的字符集是UTF8 。在嘗試安裝了幾次后發(fā)現(xiàn)以下幾種情況: 1. 將數(shù)據(jù)庫設(shè)置為 latin1 , 不修改任何文件,在安裝時(shí)無論選擇gb2312 還是utf8,都可以完成安裝,并且網(wǎng)頁顯示正常,但是通過phpmyadmin看數(shù)據(jù)表時(shí)發(fā)現(xiàn),里面所有中文全部為亂碼,也就是說,通過latin1字符集保存,可以正常顯示中文網(wǎng)頁,但是實(shí)際上在數(shù)據(jù)庫中中文是亂碼。 而且不能通過phpmyadmin備份(備份出來的文件,無論改成什么編碼,里面中文均為亂碼)。所以這不是王道,我沒有做選擇考慮。 2. 將數(shù)據(jù)庫字符集設(shè)置成utf8, 不修改任何文件,在安裝時(shí)無論選擇gb2312還是utf8,都出現(xiàn) 1071 specified key too long max length 1000 bytes 的錯(cuò)誤。并且只要是數(shù)據(jù)庫字符集設(shè)置成utf8,(utf8是一個(gè) character set 作為 3 bytes存儲(chǔ),latin1 是作為1 bytes存儲(chǔ)),無論是按照論壇中的一些意見,修改 installation/sql/mambo.sql 還是別的文件, 都會(huì)出現(xiàn)key 超過1000bytes的錯(cuò)誤,安裝不能繼續(xù)。 我本意是要安裝manbo的中文utf8版本,以方便和別的程序整合。所以在查詢了google,論壇和其他一些資料后,經(jīng)過嘗試,終于以我的想法,以選擇 manbo的utf8 字符集 在mysql4.1以上,并且字符集也是utf8 的數(shù)據(jù)庫中安裝成功。 網(wǎng)頁顯示中文正常,無亂碼,并且用phpmyadmin查詢數(shù)據(jù)庫表時(shí),所有中文也都顯示正常,并且以utf8保存。以下是我的解決方法,僅供參考:
在這一段代碼下面,也就是 CODE:
# Table structure for table `#__core_acl_aro_groups`
上面,按順序增加以下4行代碼:CODE:
ALTER TABLE `#__core_acl_aro` CHANGE `section_value` `section_value` VARCHAR( 240 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL default ‘0‘;
CODE:
ALTER TABLE `#__core_acl_aro` CHANGE `value` `value` VARCHAR( 240 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL default ‘‘;
CODE:
ALTER TABLE `#__core_acl_aro` ADD UNIQUE `section_value_value_aro` ( `section_value` , `value` );
CODE:
ALTER TABLE `#__core_acl_aro` ADD UNIQUE `#__gacl_section_value_value_aro` (`section_value`,`value`);
-----------------------------
如此修改后能夠正常安裝,并且在數(shù)據(jù)庫中的中文顯示和保存都正常,如果需要整合discuz或者其他程序的時(shí)候,也能夠選擇UTF8版本,并且整合后不會(huì)出現(xiàn)在注冊時(shí)使用中文用戶名,但是注冊后顯示為亂碼的現(xiàn)象。 注意事項(xiàng) 經(jīng)本方法修改后,請?jiān)谏塵anbo的時(shí)候,對 includes/database.php 做相應(yīng)的修改,否則會(huì)出錯(cuò)。 上面的解決方案,其實(shí)就是做了個(gè)妥協(xié),將會(huì)超過1000bytes,并且不會(huì)影響中文存儲(chǔ)和顯示的數(shù)據(jù)表 mos_core_acl_aro 表中的 section_value字段和 value 字段以 latin1 處理,其他以utf8處理而已。這樣就能做到順利安裝,而且mysql不會(huì)影響中文的顯示和存儲(chǔ)。 我的服務(wù)器環(huán)境是:apache_2.0.55-win32
php4.3.10 mysql5.0.15 ZendOptimizer-2.6.0-Windows MamboV4[1].5.3h_Global 操作系統(tǒng):winxp sp2 完全按照摟主的方式進(jìn)行更改,安裝過程一切順利,但是當(dāng)我在管理平臺(tái)進(jìn)行如下操作的時(shí)候出現(xiàn)如下錯(cuò)誤提示: 操作:[內(nèi)容]-〉[所有內(nèi)容條目] 錯(cuò)誤:DB function failed with error number 1054 Unknown column ‘c.access‘ in ‘on clause‘ SQL=SELECT c.*, g.name AS groupname, cc.name, u.name AS editor, f.content_id AS frontpage, s.title AS section_name, v.name AS author FROM mos_content AS c, mos_categories AS cc, mos_sections AS s LEFT JOIN mos_groups AS g ON g.id = c.access LEFT JOIN mos_users AS u ON u.id = c.checked_out LEFT JOIN mos_users AS v ON v.id = c.created_by LEFT JOIN mos_content_frontpage AS f ON f.content_id = c.id WHERE c.state >= 0 AND c.catid=cc.id AND cc.section=s.id AND s.scope=‘content‘ ORDER BY s.title, c.catid, cc.ordering, cc.title, c.ordering LIMIT 0,10 不知道摟主或其他人有沒有遇到過這種情況? 解決方法: 在這個(gè)文件中 administrator\components\com_content\admin.content .php 找到 . "\n FROM #__content AS c, #__categories AS cc, #__sections AS s" 替換為 . "\n FROM #__categories AS cc, #__sections AS s, #__content AS c" 共有2處要替換 |
|