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 adodb连接不同数据库
Mar 19 PHP
php array_filter除去数组中的空字符元素
Jun 21 PHP
PHP关联链接常用代码
Nov 05 PHP
探讨:如何编写PHP扩展
Jun 13 PHP
浅析PHP中Collection 类的设计
Jun 21 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
php通过递归方式复制目录和子目录的方法
Mar 13 PHP
php判断对象是派生自哪个类的方法
Jun 20 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
Nov 23 PHP
最新版本PHP 7 vs HHVM 多角度比较
Feb 14 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
laravel框架的安装与路由实例分析
Oct 11 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
在数据量大(超过10万)的情况下
2007/01/15 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
PHP return语句的另一个作用
2014/07/30 PHP
php include类文件超时问题处理
2015/02/06 PHP
Prototype1.5 rc2版指南最后一篇之Position
2007/01/10 Javascript
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
Angular.JS学习之依赖注入$injector详析
2016/10/20 Javascript
layui文件上传实现代码
2017/05/20 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
2018/12/12 Javascript
一些你可能不熟悉的JS知识点总结
2019/03/15 Javascript
动态创建类实例代码
2009/10/07 Python
python在指定目录下查找gif文件的方法
2015/05/04 Python
python3使用pandas获取股票数据的方法
2018/12/22 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
什么是数组名
2012/05/10 面试题
超市仓管员岗位职责
2014/04/07 职场文书
大型演出策划方案
2014/05/28 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
老公保证书怎么写
2015/02/26 职场文书
水电施工员岗位职责
2015/04/11 职场文书
幼儿园教师个人工作总结2015
2015/05/12 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书
mysql数据库入门第一步之创建表
2021/05/14 MySQL
Python实现随机生成迷宫并自动寻路
2021/06/13 Python
Python之matplotlib绘制饼图
2022/04/13 Python