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&amp;java(二)
Oct 09 PHP
php 页面执行时间计算代码
Dec 04 PHP
无JS,完全php面向过程数据分页实现代码
Aug 27 PHP
PHP动态页生成静态页的3种常用方法
Nov 13 PHP
php pthreads多线程的安装与使用
Jan 19 PHP
ThinkPHP中where()使用方法详解
Apr 19 PHP
php遍历替换目录下文件指定内容的方法
Nov 10 PHP
PHP实现上传图片到数据库并显示输出的方法
May 31 PHP
PHP时间戳和日期相互转换操作实例小结
Dec 18 PHP
Laravel配置全局公共函数的方法步骤
May 09 PHP
如何通过PHP实现Des加密算法代码实例
May 09 PHP
PhpSpreadsheet设置单元格常用操作汇总
Nov 13 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
用sql命令修改数据表中的一个字段为非空(not null)的语句
2010/06/04 PHP
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
2011/05/25 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
2017/07/07 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
Python常用的日期时间处理方法示例
2015/02/08 Python
探究python中open函数的使用
2016/03/01 Python
Python中str.format()详解
2017/03/12 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
Python生成器generator原理及用法解析
2020/07/20 Python
Python 3.9的到来到底是意味着什么
2020/10/14 Python
Python使用Turtle模块绘制国旗的方法示例
2021/02/28 Python
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
推荐WEB开发者最佳HTML5和CSS3代码生成器
2015/11/24 HTML / CSS
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
世界领先的26岁以下学生和青少年旅行预订网站:StudentUniverse
2018/07/01 全球购物
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
实习单位鉴定评语
2014/04/26 职场文书
大一新生期末自我评价
2014/09/12 职场文书
高校教师个人总结
2015/02/10 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
PyTorch中的torch.cat简单介绍
2022/03/17 Python