php字串編碼有關問題
來源:互聯網
上載者:User
php字串編碼問題
一、PHP編碼轉換函式
mb_convert_encoding — Convert character encoding(PHP 4 >= 4.0.6, PHP 5)
用法:
string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
需要先啟用 mbstring 擴充庫,在 php.ini裡將; extension=php_mbstring.dll 前面的 ; 去掉
string iconv ( string in_charset, string out_charset, string str )
注意:
第二個參數,除了可以指定要轉化到的編碼以外,還可以增加兩個尾碼://TRANSLIT 和 //IGNORE,
其中:
//TRANSLIT 會自動將不能直接轉化的字元變成一個或多個近似的字元,
//IGNORE 會忽略掉不能轉化的字元,而預設效果是從第一個非法字元截斷。
Returns the converted string or FALSE on failure.
二、自動擷取字串編碼函數
當在php中使用mb_detect_encoding函數進行編碼識別時,很多人都碰到過識別編碼有誤的問題,例如對與GB2312和UTF- 8,或者UTF-8和GBK(這裡主要是對於cp936的判斷),網上說是由於字元短是,mb_detect_encoding會出現誤判。
例如:
$encode = mb_detect_encoding($keytitle, array("ASCII",'UTF-8′,"GB2312′,"GBK",'BIG5′));
if ($encode == “UTF-8″){
$keytitle = iconv("UTF-8″,"GBK",$keytitle);
}
這段代碼的作用是檢測字串的編碼是否UTF-8,是的話就轉換為GBK。
其中mb是指multi-bytes的意思,是它的一個縮寫,真牛B。