php检测文件编码方法[非完美]
关于文件编码的检测,百度一下一大把都是,但是确实没有能用的、
很多人建议 mb_detect_encoding 检测,可是不知为何我这不成功,什么都没输出、
看到有人写了个增强版,用 BOM 判断的,我果断就无视了,这东西完全不靠谱、
最终根据PHP手册里 mb_detect_encoding 函数下方的例子,自己写了一个检测函数,
还包括自动检测编码并按指点编码读取文件的函数、
源码献上,不喜勿喷。
网上的方法我试过没用才写的,说不定环境不一样导致的。
所以万一没用,也别喷我,我只是共享想思路而已、、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <?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 "" ; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述