剛剛在處理 MsSQL(big5) 轉 MySQL(UTF8)時,採用了 iconv 去做轉碼的處理
一開始處理幾個 Table 都沒什麼問題,直到一個欄位裡面有中文全形」/」,引起 iconv 無法轉換而整個 SQL 句子中斷
iconv 語法
iconv(FromEncoding, ToEncoding, String);
上網查到 iconv 第二個參數可以加上額外參數
//IGNORE直接把錯誤的字去掉,使用上正常,但是資料與原始的不同
$txt = iconv("big5","utf-8//IGNORE",$query);
//TRANSLIT遇到中文的"/"還是出錯
$txt = iconv("big5","utf-8//TRANSLIT",$query);
$txt = iconv("big5","utf-8//IGNORE",$query);
//TRANSLIT遇到中文的"/"還是出錯
$txt = iconv("big5","utf-8//TRANSLIT",$query);
這邊有一篇關於 Translit 參數的說明
Iconv and incompatible encodings
文章中指出
//TRANSLIT will raise an exception on characters it can't transliterate, however; this can be solved by using '//IGNORE//TRANSLIT' together (in that order).
最後是採用了 mb_convert_encoding 來解決
//mb_convert_encoding 可以正常的把字串轉為 UTF8,但聽說速度較慢
$txt = mb_convert_encoding($query,"utf-8","big5");
$txt = mb_convert_encoding($query,"utf-8","big5");
沒有留言:
張貼留言