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 相关文章推荐
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 PHP
rrmdir php中递归删除目录及目录下的文件
May 15 PHP
用来解析.htgroup文件的PHP类
Sep 05 PHP
Thinkphp模板中使用自定义函数的方法
Sep 23 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
Jun 21 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
Jun 27 PHP
PHP中echo和print的区别
Aug 28 PHP
PHP大转盘中奖概率算法实例
Oct 21 PHP
ThinkPHP处理Ajax返回的方法
Nov 22 PHP
新浪微博OAuth认证和储存的主要过程详解
Mar 27 PHP
PHP中new static()与new self()的比较
Aug 19 PHP
PHP 获取客户端 IP 地址的方法实例代码
Nov 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
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
PHP 加密 Password Hashing API基础知识点
2020/03/02 PHP
javascript中获取选中对象的类型
2007/04/02 Javascript
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
node.js中的console用法总结
2014/12/15 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
在vue中使用jointjs的方法
2018/03/24 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
Python-基础-入门 简介
2014/08/09 Python
python实现画圆功能
2018/01/25 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
房地产管理毕业生自荐信
2013/11/04 职场文书
特色冷饮店创业计划书
2014/01/28 职场文书
餐厅筹备计划书
2014/04/25 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
防灾减灾标语
2014/10/07 职场文书
车间统计员岗位职责
2015/04/14 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书
公司员工奖惩制度
2015/08/04 职场文书
2016领导干部廉洁从政心得体会
2016/01/19 职场文书
Java实现添加条码或二维码到Word文档
2022/06/01 Java/Android