php检测文件编码的方法示例


Posted in PHP onApril 25, 2014

关于文件编码的检测,百度一下一大把都是,但是确实没有能用的、很多人建议 mb_detect_encoding 检测,可是不知为何我这不成功,什么都没输出、看到有人写了个增强版,用 BOM 判断的,我果断就无视了,这东西完全不靠谱、最终根据PHP手册里 mb_detect_encoding 函数下方的例子,自己写了一个检测函数,
还包括自动检测编码并按指点编码读取文件的函数、源码献上。

<?php
 /**
* 检测文件编码
 * @param string $file 文件路径
* @return string|null 返回 编码名 或 null
*/
 function detect_encoding($file) {
     $list = array('GBK', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'ISO-8859-1');
     $str = file_get_contents($file);
     foreach ($list as $item) {
         $tmp = mb_convert_encoding($str, $item, $item);
         if (md5($tmp) == md5($str)) {
             return $item;
         }
     }
     return null;
}
/**
* 自动解析编码读入文件
* @param string $file 文件路径
* @param string $charset 读取编码
* @return string 返回读取内容
*/
function auto_read($file, $charset='UTF-8') {
    $list = array('GBK', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'ISO-8859-1');
     $str = file_get_contents($file);
     foreach ($list as $item) {
        $tmp = mb_convert_encoding($str, $item, $item);
        if (md5($tmp) == md5($str)) {
             return mb_convert_encoding($str, $charset, $item);
         }
     }
    return "";
}
PHP 相关文章推荐
PHP通用分页类page.php[仿google分页]
Aug 31 PHP
一篇有意思的技术文章php介绍篇
Oct 26 PHP
php中过滤非法字符的具体实现
Oct 29 PHP
php目录操作实例代码
Feb 21 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
Mar 07 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
PHP控制前台弹出对话框的实现方法
Aug 21 PHP
ThinkPHP防止重复提交表单的方法实例分析
May 10 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 PHP
JS操作XML中DTD介绍及使用方法分析
Jul 04 PHP
PHP程序员必须知道的两种日志实例分析
May 14 PHP
基于PHP实现堆排序原理及实例详解
Jun 19 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
Apr 25 #PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
Apr 25 #PHP
php除数取整示例
Apr 24 #PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
Apr 24 #PHP
PHP模板引擎Smarty的缓存使用总结
Apr 24 #PHP
php smarty模板引擎的6个小技巧
Apr 24 #PHP
PHP中使用smarty生成静态文件的例子
Apr 24 #PHP
You might like
PHP中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
PHP新手NOTICE错误常见解决方法
2011/12/07 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
2019/07/22 PHP
Thinkphp5 自定义上传文件名的实现方法
2019/07/23 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
jQuery随便控制任意div隐藏的方法
2013/06/28 Javascript
一段非常简单的js判断浏览器的内核
2014/08/17 Javascript
jQuery对象与DOM对象之间的相互转换
2015/03/03 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
AngularJS ng-bind 指令简单实现
2016/07/30 Javascript
jQuery Dom元素操作技巧
2018/02/04 jQuery
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
Python处理JSON数据并生成条形图
2016/08/05 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
Python使用LDAP做用户认证的方法
2019/06/20 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
python cv2.resize函数high和width注意事项说明
2020/07/05 Python
Python爬取某平台短视频的方法
2021/02/08 Python
麦当劳印度网上订餐:McDelivery
2020/03/16 全球购物
Blue Nile中国官网:全球知名的钻石和珠宝网络零售商
2020/03/22 全球购物
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
一些Solaris面试题
2015/12/22 面试题
初中校园广播稿
2014/02/02 职场文书
工作评语大全
2014/04/26 职场文书
企业文化标语口号
2014/06/09 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
2015年机关后勤工作总结
2015/05/26 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书
详解php中流行的rpc框架
2021/05/29 PHP