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采集速度探究总结(原创)
Apr 18 PHP
PHP+MySQL 手工注入语句大全 推荐
Oct 30 PHP
php抓取页面与代码解析 推荐
Jul 23 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
Sep 04 PHP
destoon二次开发常用数据库操作
Jun 21 PHP
set_exception_handler函数在ThinkPHP中的用法
Oct 31 PHP
php获取网站百度快照日期的方法
Jul 29 PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 PHP
php htmlentities()函数的定义和用法
May 13 PHP
thinkphp框架实现数据添加和显示功能
Jun 29 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
Apr 20 PHP
Laravel中Kafka的使用详解
Mar 24 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
消息持续发送的完整例子
2006/10/09 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
新浪SAE搭建PHP项目教程
2015/01/28 PHP
php无限极分类实现方法分析
2019/07/04 PHP
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
2010/06/02 Javascript
JavaScript访问样式表代码
2010/10/15 Javascript
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
深入理解angularjs过滤器
2016/05/25 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
Vue.js每天必学之内部响应式原理探究
2016/09/07 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
vue项目中api接口管理总结
2018/04/20 Javascript
基于ionic实现下拉刷新功能
2018/05/10 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
跟老齐学Python之变量和参数
2014/10/10 Python
python在指定目录下查找gif文件的方法
2015/05/04 Python
用python找出那些被“标记”的照片
2017/04/20 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
护士的岗位职责
2013/12/04 职场文书
英文导游欢迎词
2014/01/11 职场文书
《木笛》教学反思
2014/03/01 职场文书
实验室的标语
2014/06/20 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
旷课检讨书范文
2014/10/30 职场文书
2015年超市收银员工作总结
2015/04/25 职场文书
开学典礼校长致辞
2015/07/29 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
2019年入党思想汇报
2019/03/25 职场文书
详解JS ES6编码规范
2021/05/07 Javascript