使用PHP和MYSQL開發(fā)過程中經(jīng)常會遇到PHP寫入或讀取MYSQL數(shù)據(jù)庫中數(shù)據(jù),出現(xiàn)中文亂碼的問題炫狱,英文和數(shù)字不會出現(xiàn)亂碼藻懒。這個問題非常讓人頭痛,因為導(dǎo)致這個問題的原因比較多视译,比如網(wǎng)頁和數(shù)據(jù)庫編碼不一致嬉荆,不同版本MYSQL不兼容等,想一下找到解決方法還是有點困難的…今天我編寫一個小程序的時候又遇到了這個問題酷含。
用php向mysql中寫數(shù)據(jù),在Dreamweaver中先設(shè)置了首選參數(shù)中的編碼為utf-8,前后臺頁面都統(tǒng)一用utf-8(mysql默認就是用的utf-8,那就不必改了 ),但是一碰到向數(shù)據(jù)庫里寫的數(shù)據(jù)中有中文,打開phpmyadmin一看中文全是亂碼,于是用Google查解決方法, 試了不少方法都不行鄙早,不是寫入出現(xiàn)中文亂碼就是讀取出現(xiàn)中文亂碼。
最后還是用常見的方法:mysql_query中的”set names charset”, 解決了椅亚。其中有一點要特別注意:PHP中設(shè)置使用“utf8”限番,而不是“utf-8”。就這樣問題解決了呀舔,我也感到有點奇怪弥虐,平時把utf-8和utf8看做一回事,其實不然!
總結(jié)一下這個亂碼問題的解決方法:
1.確認所有頁面都統(tǒng)一使用同樣的編碼,強烈建議用utf-8;
- 在用mysql_query作查詢時無論是寫入數(shù)據(jù)到mysql還是從mysql提數(shù)據(jù)出來,設(shè)置mysql_query(“set names utf8″)..,連接數(shù)據(jù)庫時就設(shè)置,而且不要把這時的“utf8”寫成“utf-8”霜瘪,這點很重要珠插。
設(shè)置了mysql_query(“set names ‘charset’”)之后,就不再出類似以下問題:
1.用php寫入數(shù)據(jù)到mysql用phpmyadmin查看時中文變成了一堆不知所云的亂碼;
2.用php寫入到mysql的中文在phpmyadmin中查看正常,但PHP讀出來顯示到網(wǎng)頁中時全都變成了”?????”。