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 include加载文件两种方式效率比较
Aug 08 PHP
php explode函数实例代码
Feb 27 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
Jun 24 PHP
PHP入门之常量简介和系统常量
May 12 PHP
php函数serialize()与unserialize()用法实例
Nov 06 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
Nov 22 PHP
PHP日期函数date格式化UNIX时间的方法
Mar 19 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
Dec 24 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
Feb 14 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 PHP
CI框架(CodeIgniter)操作redis的方法详解
Jan 25 PHP
PHP Include文件实例讲解
Feb 15 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
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
PHP实现多文件上传的方法
2015/07/08 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
2016/11/20 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
javascript 表单验证常见正则
2009/09/28 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
2016/10/15 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
使用node.js搭建服务器
2017/05/20 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
Python切片用法实例教程
2014/09/08 Python
Python psutil模块简单使用实例
2015/04/28 Python
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
python实现神经网络感知器算法
2017/12/20 Python
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
查看Django和flask版本的方法
2018/05/14 Python
Python使用post及get方式提交数据的实例
2019/01/24 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
学校领导班子对照检查材料
2014/08/28 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
党章学习心得体会2016
2016/01/14 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
Python的flask接收前台的ajax的post数据和get数据的方法
2021/04/12 Python
Python之基础函数案例详解
2021/08/30 Python
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫