[分享] phpmyadmin資料匯出編碼亂掉解決

看板PHP作者 (TeA)時間15年前 (2010/10/27 16:16), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/1
有時候,可能會遇到舊系統當初在設計的時候,系統並無特別指定編碼 所以在資料庫存檔時,是採用latin1編碼存檔,結果在phpmyadmin 匯出的時候,所得到的資料是亂碼。 經過今天的實驗,以下可將亂碼資料轉回成正確編碼狀態: <?php //讀取檔案 $content = file_get_contents("db.sql"); //將文字從utf8轉成latin1編碼(當初在phpmyadmin介面是指定utf8瀏覽) $content = mb_convert_encoding($content,'latin1','utf8'); //輸出 echo $content; ?> 以上重點在於要把phpmyadmin當時在匯出的時候,當時所採用的編碼給轉回去latin1 嗯...後來我都用utf8編碼,所以都沒再遇到這樣的問題, 是剛好今天在轉舊系統的資料,碰巧又遇到編碼上的問題, 好奇心的驅使下來解決六年前我不會的問題... (以前我不會解決 Orz) 如果各位先進早就都會了,就當我野人獻曝吧 ~ T_T -- 從一代一代的問候就看的出來 老手對新手的照顧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.130.212.222

10/27 16:27, , 1F
這樣轉..理論上會出錯得...
10/27 16:27, 1F

10/27 16:29, , 2F
big5(WEB)->latin1(DB)->utf8(phpmyadmin)
10/27 16:29, 2F

10/27 16:29, , 3F
我今天是這樣解決問題的 T_T
10/27 16:29, 3F

10/28 10:43, , 4F
是不會出錯 但也不算正確 只是latin1剛好包含1byte中
10/28 10:43, 4F

10/28 10:43, , 5F
所有可能的value 當byte string用而已
10/28 10:43, 5F

10/28 10:44, , 6F
不過那是舊系統的問題..
10/28 10:44, 6F
文章代碼(AID): #1Cnz_3IB (PHP)
文章代碼(AID): #1Cnz_3IB (PHP)