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


Posted in PHP onMay 31, 2011

当在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 相关文章推荐
PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
Feb 15 PHP
为PHP初学者的8点有效建议
Nov 20 PHP
PHP学习之字符串比较和查找
Apr 17 PHP
php解析json数据实例
Aug 19 PHP
Linux下安装PHP MSSQL扩展教程
Oct 24 PHP
PHP中常用的字符串格式化函数总结
Nov 19 PHP
PHP中SimpleXML函数用法分析
Nov 26 PHP
php操作redis缓存方法分享
Jun 03 PHP
laravel学习教程之关联模型
Jul 30 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
May 24 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 PHP
比较时间段一与时间段二是否有交集的php函数
May 31 #PHP
实用PHP会员权限控制实现原理分析
May 29 #PHP
允许phpmyadmin空密码登录的配置方法
May 29 #PHP
php统计文件大小,以GB、MB、KB、B输出
May 29 #PHP
PHP之数组学习
May 29 #PHP
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
May 29 #PHP
php连接数据库代码应用分析
May 29 #PHP
You might like
php AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
PHP的SQL注入过程分析
2012/01/06 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
php浏览历史记录的方法
2015/03/10 PHP
PHP获取星期几的常用方法小结
2018/12/18 PHP
JavaScript 学习历程和心得分享
2010/12/12 Javascript
js实现拖拽 闭包函数详细介绍
2012/11/25 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
2015/03/04 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
Vue自定义指令详解
2017/07/28 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
详解vue-cli官方脚手架配置
2018/07/20 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
Python实现的字典值比较功能示例
2018/01/08 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
对python抓取需要登录网站数据的方法详解
2018/05/21 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
python 通过exifread读取照片信息
2020/12/24 Python
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
工商企业管理专业自荐信范文
2014/04/12 职场文书
演讲开头怎么书写?
2019/08/06 职场文书
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js