php检测文件编码的方法

 关于文件编码的检测,百度一下一大把都是,但是确实没有能用的、很多人建议 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 "";
}
 

时间: 2024-10-02 17:01:48

php检测文件编码的方法的相关文章

php检测文件编码的方法示例_php实例

关于文件编码的检测,百度一下一大把都是,但是确实没有能用的.很多人建议 mb_detect_encoding 检测,可是不知为何我这不成功,什么都没输出.看到有人写了个增强版,用 BOM 判断的,我果断就无视了,这东西完全不靠谱.最终根据PHP手册里 mb_detect_encoding 函数下方的例子,自己写了一个检测函数,还包括自动检测编码并按指点编码读取文件的函数.源码献上. 复制代码 代码如下: <?php /*** 检测文件编码 * @param string $file 文件路径*

自己写了一个php检测文件编码的函数_php技巧

关于文件编码的检测,百度一下一大把都是,但是确实没有能用的. 很多人建议 mb_detect_encoding 检测,可是不知为何我这不成功,什么都没输出. 看到有人写了个增强版,用 BOM 判断的,我果断就无视了,这东西完全不靠谱. 最终根据PHP手册里 mb_detect_encoding 函数下方的例子,自己写了一个检测函数, 还包括自动检测编码并按指点编码读取文件的函数. 源码献上,不喜勿喷. 网上的方法我试过没用才写的,说不定环境不一样导致的. 所以万一没用,也别喷我,我只是共享想思路

ios-iphone检测文件更新的方法

问题描述 iphone检测文件更新的方法 开发了一个IOS应用,在文档目录中有一些文件,需要检测这些文件是否被编辑或者更改过.不知道应该怎么实现?还有如果获取最后一次修改的时间? 谢谢您的解答. 解决方案 下面的代码可以得到文件修改时间: NSFileManager* fileManager = [NSFileManager defaultManager];NSDictionary* attributes = [fileManager attributesOfItemAtPath:path er

ASP检测文件编码的实现方法

最近,在搞这个东西,网上也找不到asp相关的,如果有人很早弄出来了,也不要笑话偶:费了好久,总算搞定: 原理:用stream对象预读文件的头两个字节,分析判断出utf-8,unicode,ANSI(简体中文操作系统,即gb2312)编码 相关资料: ANSI: 无格式定义: Unicode: 前两个字节为FFFE: Unicode big endian: 前两字节为FEFF: UTF-8: 前两字节为EFBB: function checkcode(path)set objstream=serv

Linux系统下转换文件编码的方法小结

  一.利用iconv命令进行文件内容编码转换 用法: iconv [选项...] [文件...] 有如下选项可用: 输入/输出格式规范: -f, --from-code=名称 原始文本编码 -t, --to-code=名称 输出编码 信息: -l, --list 列举所有已知的字符集 输出控制: -c 从输出中忽略无效的字符 -o, --output=FILE 输出文件 -s, --silent 关闭警告 --verbose 打印进度信息 -?, --help 给出该系统求助列表 --usag

用asp实现检测文件编码_应用技巧

最近,在搞这个东西,网上也找不到asp相关的,如果有人很早弄出来了,也不要笑话偶:费了好久,总算搞定: 原理:用stream对象预读文件的头两个字节,分析判断出utf-8,unicode,ANSI(简体中文操作系统,即gb2312)编码 相关资料: ANSI: 无格式定义: Unicode:   前两个字节为FFFE: Unicode big endian:   前两字节为FEFF: UTF-8:    前两字节为EFBB:  复制代码 代码如下: function checkcode(path

用asp实现检测文件编码

最近,在搞这个东西,网上也找不到asp相关的,如果有人很早弄出来了,也不要笑话偶:费了好久,总算搞定: 原理:用stream对象预读文件的头两个字节,分析判断出utf-8,unicode,ANSI(简体中文操作系统,即gb2312)编码 相关资料: ANSI: 无格式定义: Unicode:   前两个字节为FFFE: Unicode big endian:   前两字节为FEFF: UTF-8:    前两字节为EFBB: 复制代码 代码如下:function checkcode(path) 

PowerShell Out-File指定文件编码的方法_PowerShell

本文介绍使用PowerShell如何来创建一个文本文件,并且文本文件是使用UTF-8编码的. 要创建一个UTF-8编码的文件,不是一件容易的事情.想一想C#中创建一个UTF-8编码的文件洪哥就头疼. 后来,仔细想了一下,我们可以把这个概念偷换一下.我们可以使用Out-File这个cmdlet来输入字符串到一文件的方式来创建一个文件,并且在创建文件时,指定它的编码为UTF-8即可. 也就是说,使用如下命令我们就可以得到一个UTF-8编码的空文件了. 复制代码 代码如下: PS C:\Users\s

asp检测文件编码

function checkcode(path) set objstream=server.createobject("adodb.stream") objstream.Type=1 objstream.mode=3 objstream.open objstream.Position=0 objstream.loadfromfile path bintou=objstream.read(2) If AscB(MidB(bintou,1,1))=&HEF And AscB(Mid