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基础知识:类与对象(2) 自动加载对象
Dec 13 PHP
php 3行代码的分页算法(求起始页和结束页)
Oct 21 PHP
在PHP中使用反射技术的架构插件使用说明
May 18 PHP
php下正则来匹配dede模板标签的代码
Aug 21 PHP
php函数的常用方法及注意之处小结
Jul 10 PHP
关于zend studio 出现乱码问题的总结
Jun 23 PHP
php读取csv文件并输出的方法
Mar 14 PHP
php curl 上传文件代码实例
Apr 27 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 PHP
PHP设计模式之观察者模式定义与用法分析
Apr 04 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
May 02 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代码
2008/04/09 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
2014/08/20 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
[JS]点出统计器
2020/10/11 Javascript
解决jquery操作checkbox火狐下第二次无法勾选问题
2014/02/10 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
node.js学习之base64编码解码
2016/10/21 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
ECMAScript6--解构
2017/03/30 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
微信小程序项目实践之主页tab选项实现
2018/07/18 Javascript
小程序实现留言板
2018/11/02 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
Python基本数据类型详细介绍
2014/03/11 Python
Python的另外几种语言实现
2015/01/29 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
Python 列表推导式需要注意的地方
2020/10/23 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
CSS3 文字动画效果
2020/11/12 HTML / CSS
英国网上购买肉类网站:Great British Meat
2018/10/17 全球购物
局部内部类是否可以访问非final变量?
2013/04/20 面试题
培训心得体会
2013/12/29 职场文书
新员工入职感言
2014/02/01 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
小学体育跳绳课教学反思
2016/02/16 职场文书
戴尔Win11系统no bootable devices found解决教程
2022/09/23 数码科技