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 相关文章推荐
BBS(php & mysql)完整版(四)
Oct 09 PHP
MYSQL数据库初学者使用指南
Nov 16 PHP
用PHP伪造referer突破网盘禁止外连的代码
Jun 15 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
Nov 30 PHP
按上下级层次关系输出内容的PHP代码
Jul 17 PHP
PHP删除数组中的特定元素的代码
Jun 28 PHP
详谈PHP编码转换问题
Jul 28 PHP
php 输入输出流详解及示例代码
Aug 25 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
PHP中常用的魔术方法
Apr 28 PHP
php中时间函数date及常用的时间计算
May 12 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 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中extract()函数的妙用分析
2012/07/11 PHP
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
session 加入redis的实现代码
2016/07/15 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
jquery解析xml字符串示例分享
2014/03/25 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
Angular2利用组件与指令实现图片轮播组件
2017/03/27 Javascript
JavaScript循环_动力节点Java学院整理
2017/06/28 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
layui关闭弹窗后刷新主页面和当前更改项的例子
2019/09/06 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
python 格式化输出百分号的方法
2019/01/20 Python
Numpy之random函数使用学习
2019/01/29 Python
python中最小二乘法详细讲解
2021/02/19 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
领先的英国注册在线药房 :Simply Meds Online
2019/03/28 全球购物
专科应届生求职信
2013/11/24 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
拆迁委托协议书
2014/09/15 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
go语言-在mac下brew升级golang
2021/04/25 Golang
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
SQL之各种join小结详细讲解
2021/08/04 MySQL
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸
Spring Boot 底层原理基础深度解析
2022/04/03 Java/Android