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实现像JSP,ASP里Application那样的全局变量
Jan 12 PHP
php 使用post,get的一种简洁方式
Apr 25 PHP
备份mysql数据库的php代码(一个表一个文件)
May 28 PHP
php 操作调试的方法
Jul 12 PHP
php中++i 与 i++ 的区别
Aug 08 PHP
如何用php获取文件名后缀
Jun 09 PHP
php读取flash文件高宽帧数背景颜色的方法
Jan 06 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
Jun 20 PHP
php实现批量修改文件名称的方法
Jul 23 PHP
php数组和链表的区别总结
Sep 20 PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 PHP
laravel数据库查询结果自动转数组修改实例
Feb 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轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
CSS+Jquery实现页面圆角框方法大全
2009/12/24 Javascript
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
基于jquery的页面划词搜索JS
2010/09/14 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
jQuery网页选项卡插件rTabs用法实例分析
2015/08/26 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
ES6中字符串的使用方法扩展
2019/06/04 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
vue实现瀑布流组件滑动加载更多
2020/03/10 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
浅谈Python数据类型判断及列表脚本操作
2016/11/04 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
Flask之flask-script模块使用
2018/07/26 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
纯CSS实现聊天框小尖角、气泡效果
2014/04/04 HTML / CSS
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
见习期自我鉴定
2013/11/07 职场文书
《狼和小羊》教学反思
2014/04/20 职场文书
综合实践活动总结
2014/05/05 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android