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 增加了对 .ZIP 文件的读取功能
Oct 09 PHP
php 显示指定路径下的图片
Oct 29 PHP
PHP 数组排序方法总结 推荐收藏
Jun 30 PHP
PHP企业级应用之常见缓存技术篇
Jan 27 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
解析thinkphp基本配置 convention.php
Jun 18 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
分享php邮件管理器源码
Jan 06 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
Mar 31 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
May 27 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循环语句笔记(foreach,list)
2011/11/29 PHP
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
2014/06/23 PHP
PHP实现在线阅读PDF文件的方法
2015/06/23 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
从javascript语言本身谈项目实战
2006/12/27 Javascript
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
2014/03/19 Javascript
jQuery实现强制cookie过期方法汇总
2015/05/22 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
微信小程序 引入es6 promise
2017/04/12 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
Python内建数据结构详解
2016/02/03 Python
Python之reload流程实例代码解析
2018/01/29 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
Python-numpy实现灰度图像的分块和合并方式
2020/01/09 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
canvas 实现 github404动态效果的示例代码
2017/11/15 HTML / CSS
video.js支持m3u8格式直播的实现示例
2020/05/20 HTML / CSS
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
2015年公路路政个人工作总结
2015/07/24 职场文书
Win11 Build 25179预览版发布(附更新内容+ISO官方镜像下载)
2022/08/14 数码科技