国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

教你如何解決453h安裝在mysql 4.1 以上的UTF8數(shù)據(jù)庫中造成的亂碼和安裝失敗問題

2024-07-24 12:57:44
字體:
供稿:網(wǎng)友

這幾天在嘗試安裝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í),所有中文也都顯示正常,并且以u(píng)tf8保存。以下是我的解決方法,僅供參考:

 


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


CODE:[Copy to clipboard]ALTER DATABASE  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
或者通過phpmyadmin里面直接改也一樣。


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

查找將所有的


CODE:[Copy to clipboard]TYPE=MyISAM;
替換成


CODE:[Copy to clipboard]TYPE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
查找


CODE:[Copy to clipboard]UNIQUE KEY `section_value_value_aro` (`section_value`,`value`)


CODE:[Copy to clipboard]UNIQUE KEY `#__gacl_section_value_value_aro` (`section_value`,`value`),
并將這2行代碼用 # 注釋掉,或者刪除,whatever~~

 

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


CODE:[Copy to clipboard]# Table structure for table `#__core_acl_aro_groups`
上面,按順序增加以下4行代碼:


CODE:[Copy to clipboard]ALTER TABLE `#__core_acl_aro` CHANGE `section_value` `section_value` VARCHAR( 240 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL default '0';

 

CODE:[Copy to clipboard]ALTER TABLE `#__core_acl_aro` CHANGE `value` `value` VARCHAR( 240 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL default '';

 

CODE:[Copy to clipboard]ALTER TABLE `#__core_acl_aro` ADD UNIQUE `section_value_value_aro` ( `section_value` , `value` );

 

CODE:[Copy to clipboard]ALTER TABLE `#__core_acl_aro` ADD UNIQUE `#__gacl_section_value_value_aro` (`section_value`,`value`);
-----------------------------

 

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


CODE:[Copy to clipboard]$this->_table_PRefix = $table_prefix;
在該行代碼下面添加以下三行代碼:


CODE:[Copy to clipboard]mysql_query("SET NAMES 'utf8'", $this->_resource);

 

CODE:[Copy to clipboard]mysql_query("SET CHARACTER SET utf8", $this->_resource);

 

CODE:[Copy to clipboard]mysql_query("SET COLLATION_CONNECTION='utf8_general_ci'", $this->_resource);
修改后保存。


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

 

如此修改后能夠正常安裝,并且在數(shù)據(jù)庫中的中文顯示和保存都正常,如果需要整合discuz或者其他程序的時(shí)候,也能夠選擇UTF8版本,并且整合后不會(huì)出現(xiàn)在注冊(cè)時(shí)使用中文用戶名,但是注冊(cè)后顯示為亂碼的現(xiàn)象。

注意事項(xiàng)
經(jīng)本方法修改后,請(qǐng)?jiān)谏?jí)manbo的時(shí)候,對(duì) includes/database.php 做相應(yīng)的修改,否則會(huì)出錯(cuò)。

以上修改方法是我參考了論壇中的幾位達(dá)人以及通過google搜索查到的一些英文資料,還有TW manbo的一些資料后,經(jīng)過嘗試完成修改并經(jīng)測試沒有問題的。希望對(duì)碰到同樣問題的朋友有些用處!覺得有用的朋友頂一下,要對(duì)得起我寫的那么多東西啊。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 渭南市| 西平县| 永兴县| 武宣县| 南京市| 措美县| 汶上县| 龙江县| 郁南县| 水富县| 德化县| 嘉义县| 磴口县| 沽源县| 精河县| 八宿县| 武汉市| 石楼县| 信宜市| 顺平县| 启东市| 秭归县| 娄底市| 自贡市| 石林| 阿拉善右旗| 安仁县| 疏附县| 宁德市| 泰安市| 固阳县| 从化市| 深州市| 台东县| 南宁市| 张家川| 小金县| 拜城县| 新邵县| 武平县| 枣强县|