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。