很多人建议 mb_detect_encoding 检测,可是不知为何我这不成功,什么都没输出、
看到有人写了个增强版,用 BOM 判断的,我果断就无视了,这东西完全不靠谱、
最终根据PHP手册里 mb_detect_encoding 函数下方的例子,自己写了一个检测函数,
还包括自动检测编码并按指点编码读取文件的函数、
源码献上,不喜勿喷。
网上的方法我试过没用才写的,说不定环境不一样导致的。
所以万一没用,也别喷我,我只是共享想思路而已、、
看到有人写了个增强版,用 BOM 判断的,我果断就无视了,这东西完全不靠谱、
最终根据PHP手册里 mb_detect_encoding 函数下方的例子,自己写了一个检测函数,
还包括自动检测编码并按指点编码读取文件的函数、
源码献上,不喜勿喷。
网上的方法我试过没用才写的,说不定环境不一样导致的。
所以万一没用,也别喷我,我只是共享想思路而已、、
<span 1</span> <?<span php </span><span 2</span> <span /*</span><span * </span><span 3</span> <span * 检测文件编码 </span><span 4</span> <span * @param string $file 文件路径 </span><span 5</span> <span * @return string|null 返回 编码名 或 null </span><span 6</span> <span */</span> <span 7</span> <span function</span> detect_encoding(<span $file</span><span ) { </span><span 8</span> <span $list</span> = <span array</span>('GBK', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'ISO-8859-1'<span ); </span><span 9</span> <span $str</span> = <span file_get_contents</span>(<span $file</span><span ); </span><span 10</span> <span foreach</span> (<span $list</span> <span as</span> <span $item</span><span ) { </span><span 11</span> <span $tmp</span> = mb_convert_encoding(<span $str</span>, <span $item</span>, <span $item</span><span ); </span><span 12</span> <span if</span> (<span md5</span>(<span $tmp</span>) == <span md5</span>(<span $str</span><span )) { </span><span 13</span> <span return</span> <span $item</span><span ; </span><span 14</span> <span } </span><span 15</span> <span } </span><span 16</span> <span return</span> <span null</span><span ; </span><span 17</span> <span } </span><span 18</span> <span 19</span> <span /*</span><span * </span><span 20</span> <span * 自动解析编码读入文件 </span><span 21</span> <span * @param string $file 文件路径 </span><span 22</span> <span * @param string $charset 读取编码 </span><span 23</span> <span * @return string 返回读取内容 </span><span 24</span> <span */</span> <span 25</span> <span function</span> auto_read(<span $file</span>, <span $charset</span>='UTF-8'<span ) { </span><span 26</span> <span $list</span> = <span array</span>('GBK', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'ISO-8859-1'<span ); </span><span 27</span> <span $str</span> = <span file_get_contents</span>(<span $file</span><span ); </span><span 28</span> <span foreach</span> (<span $list</span> <span as</span> <span $item</span><span ) { </span><span 29</span> <span $tmp</span> = mb_convert_encoding(<span $str</span>, <span $item</span>, <span $item</span><span ); </span><span 30</span> <span if</span> (<span md5</span>(<span $tmp</span>) == <span md5</span>(<span $str</span><span )) { </span><span 31</span> <span return</span> mb_convert_encoding(<span $str</span>, <span $charset</span>, <span $item</span><span ); </span><span 32</span> <span } </span><span 33</span> <span } </span><span 34</span> <span return</span> ""<span ; </span><span 35</span> }
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章
刺客信条阴影:贝壳谜语解决方案
3 周前ByDDD
Windows 11 KB5054979中的新功能以及如何解决更新问题
2 周前ByDDD
在哪里可以找到原子中的起重机控制钥匙卡
3 周前ByDDD
<🎜>:死铁路 - 如何完成所有挑战
4 周前ByDDD
Atomfall指南:项目位置,任务指南和技巧
4 周前ByDDD

热工具

SublimeText3汉化版
中文版,非常好用

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

记事本++7.3.1
好用且免费的代码编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 Linux新版
SublimeText3 Linux最新版