要搞定 PHP+mySQL 常見的中文亂碼或問號顯示的問題,最高原則就是–從頭到尾都編成UTF8。
我自己的經驗就是確認下述四個地方的編碼設定都是UTF8:
Q. 從資料庫讀出的中文出現問號?
如果你進phpmyadmin看資料表內的中文顯示正常,可能是1,3,4你都做了,但2沒做。
Q. 從資料庫讀出的中文及靜態文字都是亂碼?
如果你進phpmyadmin看資料表內的中文顯示正常,可能是1,2,4你都做了,但3沒做。
Q. 從資料庫讀出的中文出現亂碼?網頁靜態文字是正常?
如果你進phpmyadmin看資料表內的中文也是亂碼,那應該是你1沒做,有做2;若你不想做1,就別做2。
如果你進phpmyadmin看資料表內的中文顯示正常,那應該是你3,4沒做。
Q. 從資料庫讀出的中文正常了,但網頁靜態文字是亂碼?
可能是4沒做到。
用phpmyadmin查看mySQL資料庫內的中文顯示亂碼 (資料表編碼可能是預設的latin1_swedish_ci,總之是非utf8語系),通常這種情況,是網頁前台本身沒編好UTF8,就把中文資料以亂碼的方式存入資料表。
這時建議你最好將資料表重建成utf8_unicode編碼,不然日後要用phpmyadmin看資料庫會很痛苦。如果你不打算重建,那在作mysql_select_db之前,就不要加上 mysql_query(“SET NAMES ‘UTF8′");,資料庫內的中文資料在網頁顯示應該還是會正常。