99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2018-10-19 閱讀量: 1965
Mysql獲取數(shù)據(jù)出現(xiàn)繁體顯示為亂碼的問(wèn)題

將數(shù)據(jù)從Mysql數(shù)據(jù)庫(kù)中導(dǎo)出來(lái),遇到 Mysql導(dǎo)出的數(shù)據(jù)中繁體顯示為亂碼、問(wèn)號(hào) 的問(wèn)題。根據(jù)經(jīng)驗(yàn)試著調(diào)整數(shù)據(jù)庫(kù)編碼,要么還是亂碼,要么沒(méi)有變化。經(jīng)過(guò)苦苦研究,終于解決了,方法比較簡(jiǎn)單,同時(shí),也摸索了一套解決mysql獲取數(shù)據(jù)出現(xiàn)亂碼思路的方案。


一、分析判斷PHP+Mysql出現(xiàn)亂碼的原因
基本概括為以下幾種情況:
1、Mysql數(shù)據(jù)庫(kù)默認(rèn)的編碼是utf8,如果PHP頁(yè)面的編碼與其不一致,可能會(huì)造成Mysql數(shù)據(jù)亂碼問(wèn)題;
2、Mysql在創(chuàng)建表或添加字段時(shí)會(huì)讓你對(duì)編碼進(jìn)行選擇, 如果PHP頁(yè)面的編碼與其不一致,同樣,可能會(huì)造成Mysql數(shù)據(jù)亂碼問(wèn)題;
3、用戶提交頁(yè)面的編碼與顯示數(shù)據(jù)的頁(yè)面編碼不一致,那么肯定會(huì)造成頁(yè)面出現(xiàn)亂碼。 如:用戶提交資料的頁(yè)面是big5或utf8編碼,顯示數(shù)據(jù)的頁(yè)面卻是gb2312;
4、獲取的數(shù)據(jù)中含有繁體中文,而出現(xiàn)亂碼,同樣可用前面的方法進(jìn)行原因分析;
5、PHP頁(yè)面字符集不正確;
6、PHP在連接Mysql數(shù)據(jù)庫(kù)時(shí)SQL語(yǔ)句指定的編碼不對(duì);
7、Mysql版本不對(duì),這點(diǎn)還未深入了解。


二、對(duì)癥下藥、一一解決
對(duì)于分析判斷Mysql數(shù)據(jù)出現(xiàn)亂碼的原因,分別進(jìn)行相應(yīng)的處理,下面整理了一個(gè)解決 Mysql數(shù)據(jù)出現(xiàn)亂碼?問(wèn)題的思路:
1、檢查程序頁(yè)面編碼是否與數(shù)據(jù)庫(kù)編碼一致,兩者必須統(tǒng)一,Mysql編碼操作或代碼設(shè)置后面會(huì)詳細(xì)敘述;
2、檢查數(shù)據(jù)庫(kù)中表或字段編碼格式是否與所需的編碼一致,同樣編碼設(shè)置操作見(jiàn)后面;比如:頁(yè)面編碼為utf-8,雖然數(shù)據(jù)庫(kù)編碼為utf8,但如果此數(shù)據(jù)字段設(shè)為gb2312,同樣會(huì)出現(xiàn)亂碼問(wèn)題。
3、檢查連接Mysql數(shù)據(jù)庫(kù)的語(yǔ)句指定的編碼是否正確,因?yàn)榭赏ㄟ^(guò)mysql_query("SET NAMES UTF8");對(duì)數(shù)據(jù)編碼進(jìn)行設(shè)置,需正確設(shè)置;
4、對(duì)于獲取的數(shù)據(jù)中繁體字顯示為亂碼情況,當(dāng)在前面1、2、3條設(shè)置都不起作用的時(shí)候,可考慮以下解決方案
如:你的網(wǎng)頁(yè)編碼為gb2312,而在提交數(shù)據(jù)時(shí),可能存在繁體字的情況,那么顯示出來(lái)肯定會(huì)出現(xiàn)亂碼的問(wèn)題。
解決方法:可將網(wǎng)站編碼設(shè)置為utf-8,及數(shù)據(jù)庫(kù)編碼設(shè)置為utf8,utf-8編碼可兼容世界上所有字符。如果已經(jīng)存在舊的數(shù)據(jù),不能簡(jiǎn)單設(shè)置為utf-8,那么可將頁(yè)面編碼設(shè)置為GBK,因?yàn)镚BK比gb2312可以顯示更多的字符,特別是要顯示簡(jiǎn)體碼的繁體字,只能用GBK。我今天遇到的情況就是通過(guò)這種方法,將連接Mysql數(shù)據(jù)庫(kù)的語(yǔ)句編碼設(shè)為GBK,問(wèn)題成功解決,因?yàn)橹暗臄?shù)據(jù)是通過(guò)gb2312頁(yè)面保存的,所以其中的繁體字導(dǎo)出會(huì)顯示為問(wèn)號(hào)。
說(shuō)到這里就順便把獲取的數(shù)據(jù)中繁體字亂碼問(wèn)題的其它情況解決方法一塊講了。
5、如果你的繁體字是以big5編碼保存的,那么在utf-8的頁(yè)面顯示,肯定會(huì)出問(wèn)題,檢查數(shù)據(jù)編碼,將之統(tǒng)一為utf-8即可。
6、另一種解決方法:將表或字段編碼設(shè)置為latin1_swedish_ci,我的數(shù)據(jù)庫(kù)編碼就是這種格式,之后我轉(zhuǎn)過(guò)utf-8,沒(méi)有多大變化,網(wǎng)上有人成功解決了繁體亂碼問(wèn)題,不妨一試。
7、其實(shí),還有一種比較笨的辦法,用phpmyadmin或其它工具,將數(shù)據(jù)全部導(dǎo)出到txt文本或sql文件,改變編碼,然后導(dǎo)入解決編碼問(wèn)題。
好了,以上就是總結(jié)的解決問(wèn)題的思路,也可以說(shuō)是方法,如果還是沒(méi)有解決,那么,難道還有更神秘的問(wèn)題??關(guān)鍵還是編碼問(wèn)題,勿想其它的地方去。


三、cmd命令、代碼設(shè)置編碼語(yǔ)言
上面講了思路,部分童鞋可能有些不解,或不知如何去設(shè)置。下面分別講述代碼設(shè)置、phpmyadmin工具設(shè)置數(shù)據(jù)庫(kù)編碼。
1、cmd命令執(zhí)行更改編碼
通過(guò)cmd命令行連上mysql數(shù)據(jù)庫(kù)后,設(shè)置編碼:set names ‘latin1′;表同理,連上表,然后設(shè)置字符集;
2、sql語(yǔ)句代碼執(zhí)行更改編碼
在phpmyadmin中執(zhí)行如下命令: ALTER DATABASE ’members’ DEFAULT CHARACTER SET utf8 COLLATE  utf8_general_ci ?(這是將members數(shù)據(jù)庫(kù)編碼設(shè)為utf8)
如下命令:ALTER TABLE ‘members’ DEFAULT CHARACTER SET utf8 COLLATE ?utf8_general_ci? (這是將members表編碼設(shè)為utf8)?
如下命令:ALTER TABLE ’members’ CHANGE ’user’ ’user’ VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_general_ci??NOT NULL? ?(這是將members表中user字段編碼設(shè)為utf8)
3、PHP頁(yè)面連接更新語(yǔ)句設(shè)置編碼
mysql_connect(‘localhost’,'user’,’123456′); 
mysql_select_db(‘my_db’);
mysql_query("set names utf8;");//select之后,sql語(yǔ)句執(zhí)行之前設(shè)置編碼語(yǔ)言

0.0000
1
關(guān)注作者
收藏
評(píng)論(0)

發(fā)表評(píng)論

暫無(wú)數(shù)據(jù)
推薦帖子