近日,我們在使用MySQL數(shù)據(jù)庫保存微信用戶信息時,發(fā)現(xiàn)了一個非常棘手的問題——中文信息總是亂碼!在深入分析了這個問題的原因后,我們發(fā)現(xiàn)了一些解決方案,下面就和大家分享一下。
一般來說,我們在使用MySQL保存中文信息時,需要保證以下兩個條件:
1.數(shù)據(jù)庫的編碼和表的編碼都為UTF-8 2.連接MySQL時必須指定編碼為UTF-8//連接數(shù)據(jù)庫的代碼示例 $con = mysqli_connect("localhost","my_user","my_password","my_db"); mysqli_query($con,"set names 'utf8'");
但是,即使我們已經(jīng)滿足了以上兩個條件,保存中文信息的時候依然會出現(xiàn)亂碼的問題。
造成這個問題出現(xiàn)的原因,是微信傳過來的數(shù)據(jù)使用了GBK編碼,而MySQL保存時卻是以UTF-8的方式進(jìn)行。解決這個問題的關(guān)鍵是將GBK編碼的數(shù)據(jù)轉(zhuǎn)換為UTF-8編碼的數(shù)據(jù),然后再進(jìn)行保存。
//將GBK編碼的數(shù)據(jù)轉(zhuǎn)換為UTF-8編碼的代碼示例 $str = iconv("GBK", "UTF-8", $str);
通過將傳過來的中文數(shù)據(jù)轉(zhuǎn)換為UTF-8編碼后,再進(jìn)行保存,就可以解決中文亂碼的問題了。
最后,我們提醒大家:在使用MySQL保存中文信息時,一定要注意編碼的問題,特別是對于外部傳入的數(shù)據(jù),要進(jìn)行編碼格式的轉(zhuǎn)換。
下一篇bean2json