今天,有個需求是要抓取網頁內容,結果遇到了中文亂碼的問題。下面,是我處理測試的通過。
一、iconv("gb2312", "UTF-8",'測試')php
$getcontent = iconv("gb2312", "UTF-8",'測試'); print_r($getcontent);
報錯:iconv(): Detected an illegal character in input string
緣由:考慮到GB2312字符集比較小
解決辦法:將GB2312字符集改爲GBK。html
二、iconv("GBK", "UTF-8",'測試')函數
$getcontent = iconv("GBK", "UTF-8",'測試'); print_r($getcontent);
報錯:亂碼狀態
解決辦法:通常狀況下用 iconv,只有當遇到沒法肯定原編碼是何種編碼,或者iconv轉化後沒法正常顯示時才用mb_convert_encoding 函數測試
三、mb_convert_encoding($contents, "UTF-8","auto")編碼
$getcontent = mb_convert_encoding($contents, "UTF-8","auto"); print_r($getcontent);
成功了!有錯誤的地方或者更好的辦法,但願能夠多多指教(*^▽^*)code
Tip:mb_convert_encoding的使用方法
參考網址:http://www.php.cn/manual/view/5241.htmlhtm
string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding = mb_internal_encoding() ] )
說明:將 string 類型 str 的字符編碼從可選的 from_encoding 轉換到 to_encoding。ip
str:要編碼的 string 。
to_encoding:str 要轉換成的編碼類型。
from_encoding:在轉換前經過字符代碼名稱來指定。它能夠是一個 array 也能夠是逗號分隔的枚舉列表。 若是沒有提供 from_encoding,則會使用內部(internal)編碼。get