2012-03-28 26 views
0

我有一個MySQL表&字段都設置爲UTF-8。問題是,一個負責編寫數據庫的以前的PHP腳本使用了其他編碼,不確定它是否在腳本本身,MySQL連接或其他地方。結果是,雖然表&字段設置爲UTF-8,但我們看到錯誤的字符而不是中文。 它看起來像這樣:PHP MySQL中文UTF-8問題

enter image description here

現在,以前的腳本(這是負責撰寫的和損壞的數據),能夠讀取以及出於某種原因,但都在UTF編碼我的新腳本-8,顯示字符如½©。這怎麼解決?

+1

嗯,你試圖讀取數據,並使用[mb_detect_encoding(http://php.net/manual/en/function.mb-detect-encoding.php)功能檢查呢?試一試,也許你可以找出什麼是原始編碼。 – Wh1T3h4Ck5 2012-03-28 10:23:48

+1

嗯燁發揮它有點,但我認爲它現在問題解決了,只是增加了MySQL查詢與'集名稱latin1',它看起來OK。 – Broshi 2012-03-28 10:30:52

回答

0

通過它的聲音,你有一個UTF8列,但你寫它,並使用latin1的連接從中讀取,因此實際上被存儲在表中的錯誤編碼。你的問題是,當你使用utf8連接從表中讀取數據時,你會看到實際存儲在那裏的數據,這就是它看起來不對的原因。您可以通過轉換爲latin1,然後通過二進制字符集(總共三個步驟)返回到utf8來修復表中錯誤編碼的數據。

0

原始數據庫使用中文編碼 - GB-18030或類似文字,而不是 Latin-1 - 當以UTF-8顯示時,組成這些字符的字節顯示爲一組拉丁變音符號。將每個字符串讀取爲GB-18030,將其轉換爲UTF-8並保存。