處理字串編碼轉換時,iconv 遇到生僻字常轉換失敗或截斷。雖可用 //IGNORE 忽略錯誤,但 mb_convert_encoding 相容性更好、支援自動偵測編碼,是更穩健的選擇。
<?php
// 遇生僻字會失敗或截斷
iconv("UTF-8", "GB2312", $data);
// 加上 //IGNORE 可忽略錯誤字元
iconv("UTF-8", "GB2312//IGNORE", $data);
?>
string iconv ( string $in_charset , string $out_charset , string $str )
// 參數順序:來源編碼、目標編碼、字串
$outstr = iconv('GBK', 'UTF-8', $instr);
string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )
// 參數順序:字串、目標編碼、來源編碼(可省略)
$outstr = mb_convert_encoding($instr, 'UTF-8', 'GBK');
專案中統一使用 mb_convert_encoding,並明確指定來源與目標編碼,避免自動偵測的效能損耗與潛在誤判。僅在舊系統維護或特定環境下才考慮 iconv。