教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 php获取字符串编码的函数mb_detect_encoding

php获取字符串编码的函数mb_detect_encoding

发布时间:2016-08-05   编辑:jiaochengji.com
本文介绍下,在php编程中,用于获取字符串编码的函数mb_detect_encoding的用法,有需要的朋友参考下。

在php编程中,当使用mb_detect_encoding函数进行编码识别时,经常会遇到识别编码有误的问题。
比如,对GB2312和UTF-8,或UTF-8和GBK(主要针对cp936的判断),有资料说是,当字符较短时,mb_detect_encoding判断会有误差。
例如:
 

复制代码 代码示例:
<?
/**
* 字符串编码函数 mb_detect_encoding
* edit by www.jbxue.com
*/
$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。
可是当 $keytitle = “%D0%BE%C6%AC”;时。
检测结果却是UTF-8.这个bug其实不算是bug,写程序时也不应当过于依赖mb_detect_encoding,当字符串较短时,检测结果产生偏差的可能性很大。

可以用如下的方法解决之:
 

复制代码 代码示例:
$encode = mb_detect_encoding($keytitle, array('ASCII','GB2312′,'GBK','UTF-8');

参数解释:
被检测的输入变量、编码方式的检测顺序(为真时后面自动忽略)、strict模式。

说明:
对编码检测的顺序进行调整,将最大可能性放在前面,这样减少被错误转换的机会。
一般先检测gb2312,当有GBK和UTF-8时,需要将常用的放到前面。

您可能感兴趣的文章:
php 检测字符编码mb_detect_encoding()函数
php获取字符串编码的函数mb_detect_encoding
php判断字符编码的二个方法
php判断字符串编码是否为utf8的函数举例
php获取字符串的编码格式的函数
php mb_detect_encoding检测字符串编码有误的问题
学习php字符串编码的转换与判断
php中mb_detect_encoding检测文件编码方法[非完美]
php字符串编码转换小例子
php字符串编码转换函数 可以自动识别原编码

[关闭]
~ ~