一、从指定的字符集中匹配是哪种字符集:
$encode = mb_detect_encoding($str,array('ASCII', 'GB2312', 'GBK', 'UTF-8'));
方法详见PHP手册,要注意的是,如果$str会匹配数组指定的多个字符集,那么以匹配到的第一个字符集为准。比如:如果$str既是GB2312(EUC-CN),又是是GBK(CP936),还是UTF-8,那么最终会返回哪种字符集,取决于数组指定的字符集的顺序,以先匹配的字符集为准。
二、将原字符集编码的字符串转成指定字符集的字符串:
1、iconv($from,$to,$str)
该函数是php内置函数,执行效率高。比如把$str从GBK转成UTF-8:
$str_encode = iconv('GBK','UTF-8', $str);
第二个参数$to中最后还可以跟//TRANSLIT或//IGNORE,分别表示:
1>//TRANSLIT:将不能转化的字符变成一个或多个近似的字符;
2>//IGNORE:忽略掉不能转化的字符,默认从第一个非法字符截断;
2、mb_convert_encoding($str,$to,$from)
使用该函数需启用php的mbstring (multi-byte string)扩展,执行效率比iconv差,$from可以是字符集数组。比如把$str从GBK转成UTF-8:
$str_encode = mb_convert_encoding($str, 'UTF-8', 'GBK');