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类
Nov 27 PHP
将文件夹压缩成zip文件的php代码
Dec 14 PHP
php 数组的指针操作实现代码
Feb 08 PHP
php木马webshell扫描器代码
Jan 25 PHP
基于session_unset与session_destroy的区别详解
Jun 03 PHP
一个比较不错的PHP日历类分享
Nov 18 PHP
php的4种常见运行方式
Mar 20 PHP
PHP操作mysql数据库分表的方法
Jun 09 PHP
Yii2实现上下联动下拉框功能的方法
Aug 10 PHP
如何使用PHP给图片加水印
Oct 12 PHP
POST一个JSON格式的数据给Restful服务实例详解
Apr 07 PHP
PHP pthreads v3使用中的一些坑和注意点分析
Feb 21 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 array_intersect()函数使用代码
2009/01/14 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
PHP exif扩展方法开启详解
2014/07/28 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
js实现选中页面文字将其分享到新浪微博
2015/11/05 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
layer弹出层框架alert与msg详解
2017/03/14 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
基于jquery实现五星好评
2017/11/18 jQuery
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
vue+iview实现分页及查询功能
2020/11/17 Vue.js
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
[05:16]《大圣!大圣》——DOTA2新英雄齐天大圣配音李世宏老师专访
2016/12/13 DOTA
[51:53]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第二场 1月24日
2021/03/11 DOTA
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
通过C++学习Python
2015/01/20 Python
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
Python的Urllib库的基本使用教程
2015/04/30 Python
python 转换 Javascript %u 字符串为python unicode的代码
2016/09/06 Python
python中numpy基础学习及进行数组和矢量计算
2017/02/12 Python
详解Python中的四种队列
2018/05/21 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
python实现顺时针打印矩阵
2019/03/02 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
2021/02/02 Python
实习会计求职自荐信范文
2014/03/10 职场文书
精神文明单位申报材料
2014/05/02 职场文书
Python echarts实现数据可视化实例详解
2022/03/03 Python