php自动获取字符串编码函数mb_detect_encoding

2015-01-24信息快讯网

使用 mb_detect_encoding() 函数来判断字符串是什么编码的。

当在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。
可是当 $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中数字检测is_numeric与ctype_digit的区别介绍
php中explode与split的区别介绍
PHP explode()函数用法、切分字符串
Linux下CoreSeek及PHP扩展模块的安装
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
php中inlcude()性能对比详解
PHP优于Node.js的五大理由分享
PHP 之Section与Cookie使用总结
PHP中extract()函数的定义和用法
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
php学习之function的用法
PHP中防止直接访问或查看或下载config.php文件的方法
php中配置文件操作 如config.php文件的读取修改等操作
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
php中json_decode()和json_encode()的使用方法
php 的加密函数 md5,crypt,base64_encode 等使用介绍
JS中encodeURIComponent函数用php解码的代码
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
php urlencode()与urldecode()函数字符编码原理详解
Apache2中实现多网站域名绑定的实现方法
比较时间段一与时间段二是否有交集的php函数
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
php性能优化分析工具XDebug 大型网站调试工具
php利用cookie实现访问次数统计代码
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE eval()'d code error
php中在PDO中使用事务(Transaction)
php cookies中删除的一般赋值方法
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
PHP 调试工具Debug Tools
php debug 安装技巧
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
使用NetBeans + Xdebug调试PHP程序的方法
php expects parameter 1 to be resource, array given 错误
php array_unique之后json_encode需要注意
PHP中文URL编解码(urlencode()rawurlencode()
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
用Zend Encode编写开发PHP程序
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
©2014-2024 dbsqp.com