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 相关文章推荐
福利彩票幸运号码自动生成器
Oct 09 PHP
两个开源的Php输出Excel文件类
Feb 08 PHP
PHP验证码类代码( 最新修改,完全定制化! )
Dec 02 PHP
Smarty foreach控制循环次数的实现详解
Jul 03 PHP
php实现快速排序的三种方法分享
Mar 12 PHP
PHP实现的博客欢迎提示功能(很特别哦)
Jun 05 PHP
php将图片文件转换成二进制输出的方法
Jun 10 PHP
PHP会话操作之cookie用法分析
Sep 28 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
tp5修改(实现即点即改)
Oct 18 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
Jan 23 PHP
php+ajax实现文件切割上传功能示例
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
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
javascript 贪吃蛇实现代码
2008/11/22 Javascript
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
JS仿iGoogle自定义首页模块拖拽特效的方法
2015/02/13 Javascript
javascript与Python快速排序实例对比
2015/08/10 Javascript
Javascript使用function创建类的两种方法(推荐)
2016/11/19 Javascript
原生js实现addclass,removeclass,toggleclasss实例
2016/11/24 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
vue使用swiper.js重叠轮播组建样式
2019/11/14 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
Python守护线程用法实例
2017/06/23 Python
Python 实现微信防撤回功能
2019/04/29 Python
selenium 多窗口切换的实现(windows)
2020/01/18 Python
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
什么是规则表达式
2012/05/03 面试题
GWT的应用有哪两种部署模式
2012/12/21 面试题
信用社员工先进事迹材料
2014/02/04 职场文书
关于清明节的演讲稿
2014/09/13 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
2015年营业员工作总结
2015/04/23 职场文书
刑事辩护词范文
2015/05/21 职场文书
七年级作文之冬景
2019/11/07 职场文书