日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Mambo 中國社區(qū) - Mambo使用交流 - ◆教你如何解決453h安裝在mysql 4.1 以上的UTF8數(shù)據(jù)庫中造成的亂碼和安裝失敗問題◆ - powered by Discuz!

 ekylin 2006-02-25
◆教你如何解決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保存。以下是我的解決方法,僅供參考:


  • 首先設(shè)置數(shù)據(jù)庫字符集為utf8,

    ALTER DATABASE  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
    或者通過phpmyadmin里面直接改也一樣。

  • 修改 installation/sql/mambo.sql 文件:

    查找將所有的

    TYPE=MyISAM;
    替換成

    TYPE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
    查找

    UNIQUE KEY `section_value_value_aro` (`section_value`,`value`)


    UNIQUE KEY `#__gacl_section_value_value_aro` (`section_value`,`value`),
    并將這2行代碼用 # 注釋掉,或者刪除,whatever~~


    在這一段代碼下面,也就是

    # Table structure for table `#__core_acl_aro_groups`
    上面,按順序增加以下4行代碼:

    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`);
    -----------------------------

    • 修改 includes/database.php 文件:
      查找

      $this->_table_prefix = $table_prefix;
      在該行代碼下面添加以下三行代碼:

      mysql_query("SET NAMES ‘utf8‘", $this->_resource);


      mysql_query("SET CHARACTER SET utf8", $this->_resource);


      mysql_query("SET COLLATION_CONNECTION=‘utf8_general_ci‘", $this->_resource);
      修改后保存。

    • 安裝的時(shí)候,選擇UTF8作為編碼格式安裝。


      如此修改后能夠正常安裝,并且在數(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處要替換

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多