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中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
Dec 19 PHP
php小型企业库存管理系统的设计与实现代码
May 16 PHP
解析php利用正则表达式解决采集内容排版的问题
Jun 20 PHP
php获取文件夹路径内的图片以及分页显示示例
Mar 11 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
Nov 19 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
Dec 18 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
Jan 30 PHP
四种php中webservice实现的简单架构方法及实例
Feb 03 PHP
php生成word并下载代码实例
Mar 15 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
Jul 20 PHP
phpstorm激活码2020附使用详细教程
Sep 25 PHP
php中数组最简单的使用方法
Dec 27 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脚本数据库功能详解(上)
2006/10/09 PHP
《PHP编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
2013/11/19 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
基于Jquery和html5的7款个性化地图插件
2015/11/17 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
[01:08:29]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第一场 1月9日
2021/03/11 DOTA
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
解决python 自动安装缺少模块的问题
2018/10/22 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
python3操作注册表的方法(Url protocol)
2020/02/05 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
Django Form常用功能及代码示例
2020/10/13 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
大学生入党自我鉴定
2013/10/31 职场文书
个人简历中自我评价
2014/02/11 职场文书
优秀团员自我评价范文
2014/04/23 职场文书
结婚保证书范文
2014/04/29 职场文书
地雷战观后感
2015/06/09 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书