1. 程式人生 > >php iconv() utf-8 編碼字串轉中文GB2312出錯的問題

php iconv() utf-8 編碼字串轉中文GB2312出錯的問題

PHP iconv 函式轉gb2312的bug解決方法

問題:發現iconv在轉換字元"—"到gb2312時會出錯:

iconv( "UTF-8", "gb2312//IGNORE" , $data) 
ignore的意思是忽略轉換時的錯誤,如果沒有ignore引數,所有該字元後面的字串都無法被儲存。 

另外mb_convert_encoding沒有這個bug,所以最好的寫法是: 
mb_convert_encoding($data, "gb2312", "UTF-8"); 
但是需要先enable mbstring 擴充套件庫。 

 

一般情況下用 iconv,只有當遇到無法確定原編碼是何種編碼,或者iconv轉化後無法正常顯示時才用mb_convert_encoding 函式。

mb_convert_encoding 可以指定多種輸入編碼,它會根據內容自動識別,但是執行效率比iconv差太多;

1 $content = iconv("GBK", "UTF-8″, $content);
2 $content = mb_convert_encoding($content"UTF-8″, "
GBK");