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新手上路(十二)
Oct 09 PHP
PHP 采集心得技巧
May 15 PHP
PHP操作mysql函数详解,mysql和php交互函数
May 19 PHP
php性能优化分析工具XDebug 大型网站调试工具
May 22 PHP
php中防止伪造跨站请求的小招式
Sep 02 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
Jun 20 PHP
PHP 转义使用详解
Jul 15 PHP
基于PHP实现商品成交时发送短信功能
May 11 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 PHP
Laravel 5+ .env环境配置文件详解
Apr 06 PHP
php7中停止php-fpm服务的方法详解
May 09 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
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
JS远程获取网页源代码实例
2013/09/05 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
JavaScript位移运算符(无符号) &gt;&gt;&gt; 三个大于号 的使用方法详解
2016/03/31 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
ECHO.js 纯javascript轻量级延迟加载的实例代码
2016/05/24 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
Vue仿今日头条实例详解
2018/02/06 Javascript
详解VueJs中的V-bind指令
2018/05/03 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
Python解决pip install时出现的Could not fetch URL问题
2019/08/01 Python
Python基于read(size)方法读取超大文件
2020/03/12 Python
python 画条形图(柱状图)实例
2020/04/24 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
英国第二大营养品供应商:Vitabiotics
2016/10/01 全球购物
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
药剂专业求职信
2014/06/20 职场文书
2014最新开业庆典策划方案(5篇)
2014/09/15 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
大学生毕业个人总结
2015/02/15 职场文书
入党自荐书范文
2015/03/05 职场文书
首席执行官观后感
2015/06/03 职场文书
初中毕业生感言
2015/07/31 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
导游词之扬州大明寺
2019/10/09 职场文书
你真的了解redis为什么要提供pipeline功能
2021/06/22 Redis
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技