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 相关文章推荐
win2003服务器使用WPS的COM组件的一些问题解决方法
Jan 11 PHP
php导入csv文件碰到乱码问题的解决方法
Feb 10 PHP
ThinkPHP的I方法使用详解
Jun 18 PHP
php中Array2xml类实现数组转化成XML实例
Dec 08 PHP
浅析PHP7新功能及语法变化总结
Jun 17 PHP
PHP flush 函数使用注意事项
Aug 26 PHP
thinkPHP多语言切换设置方法详解
Nov 11 PHP
PHP中SQL查询语句的id=%d解释(推荐)
Dec 10 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
PHP函数按引用传递参数及函数可选参数用法示例
Jun 04 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
Nov 22 PHP
Laravel核心解读之异常处理的实践过程
Feb 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
Php中使用Select 查询语句的实例
2014/02/19 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
Javascript this 的一些学习总结
2012/08/31 Javascript
提示$ is not defined错误分析及解决
2013/04/09 Javascript
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
2015/03/20 Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
2015/03/27 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
nodejs 中模拟实现 emmiter 自定义事件
2016/02/22 NodeJs
微信小程序开发之toast等弹框提示使用教程
2017/06/08 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
Python OS模块常用函数说明
2015/05/23 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
Python zip函数打包元素实例解析
2019/12/11 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
python ETL工具 pyetl
2020/06/07 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
大学生四个方面的自我评价
2013/09/19 职场文书
跟单文员的岗位职责
2013/11/14 职场文书
学生自我鉴定
2013/12/18 职场文书
员工薪酬福利制度
2014/01/17 职场文书
《乡愁》教学反思
2014/02/18 职场文书
植树造林的宣传标语
2014/06/23 职场文书
某集团股份有限公司委托书样本
2014/09/24 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
终止合同协议书范本
2016/03/22 职场文书
python实现三次密码验证的示例
2021/04/29 Python
Pytest中skip和skipif的具体使用方法
2021/06/30 Python
使用python绘制横竖条形图
2022/04/21 Python