php字符串编码问题
一、PHP编码转换函数
mb_convert_encoding—Convertcharacterencoding(PHP4>=4.0.6,PHP5)
用法:
stringmb_convert_encoding(stringstr,stringto_encoding[,mixedfrom_encoding])
需要先启用mbstring扩展库,在php.ini里将;extension=php_mbstring.dll前面的;去掉
stringiconv(stringin_charset,stringout_charset,stringstr)
注意:
第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT和//IGNORE,
其中:
//TRANSLIT会自动将不能直接转化的字符变成一个或多个近似的字符,
//IGNORE会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。
ReturnstheconvertedstringorFALSEonfailure.
二、自动获取字符串编码函数
当在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。