Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  php  >  正文 php mb_detect_encoding检测字符串编码有误的问题

php mb_detect_encoding检测字符串编码有误的问题

发布时间:2015-09-19   编辑:www.jquerycn.cn
php mb_detect_encoding函数进行字符串编码时,有时会出现编码有误的问题,比如对GB2312和UTF-8,或UTF-8和GBK(主要是cp936的判断)。

当字符短较短时,mb_detect_encoding会出现误判的情况发生,有遇到此问题的朋友,可以参考下本文的解决方法。

例如:
 

复制代码 代码示例:
<?php
$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,我们不应当过于依赖mb_detect_encoding,当字符串较短时,检测结果产生偏差的可能性很大。

解决方法:
 

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

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

适时调整编码检测的顺序,将最大可能性放在前面,可以减少转换出错的机会。
好的习惯是:当有GBK和UTF-8时,先排gb2312,即将最常用的安排在前面。

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

[关闭]