此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除

增加了检测子文件夹和排除不要检测的文件夹,转载的很好用。

<?php
/*** 此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除 * 增加了检测子文件夹和排除不要检测的文件夹* * @author yangzy*/
$bom = new bom();
$bom->run();
class bom
{public $basedir = ".";//修改此行为需要检测的目录,点表示当前目录public $auto = '1';//是否自动移除发现的BOM信息。1为是,0为否。public $file_arr = array('.svn','p_w_picpaths','data','shop','temp');//不需要检测文件夹public function __construct(){}/*** 运行程序*/public function run($basedir = ''){$basedir || $basedir = $this->basedir;if ($dh = opendir($basedir)) {while (($file = readdir($dh)) !== false) {if ($file!='.' && $file!='..' && !is_dir($basedir."/".$file)){echo $basedir."/".$file.':'.$this->checkBOM($basedir."/$file")." <br>";}elseif ($file!='.' && !in_array($file, $this->file_arr) && $file!='..' && is_dir($basedir."/".$file)){$this->run($basedir."/".$file);}}closedir($dh);}}/*** 检测bom文件*/public function checkBOM($filename){$contents=file_get_contents($filename);$charset[1]=substr($contents, 0, 1);$charset[2]=substr($contents, 1, 1);$charset[3]=substr($contents, 2, 1);if (ord($charset[1])==239 && ord($charset[2])==187 && ord($charset[3])==191) {if ($this->auto == 1) {$rest=substr($contents, 3);$this->rewrite ($filename, $rest);return ("<font color=red>BOM found, automatically removed.</font>");} else {return ("<font color=red>BOM found.</font>");}}else return ("BOM Not Found.");}/*** 重新生成文件*/public function rewrite($filename, $data){$filenum=fopen($filename,"w");flock($filenum,LOCK_EX);fwrite($filenum,$data);fclose($filenum);}
}

转载于:https://blog.51cto.com/hnllyrp/1344386

快速测试UTF8编码的文件是不是加了BOM,不限PHP相关推荐

  1. JAVA输出带BOM的UTF-8编码的文件

    https://blog.csdn.net/comeonyangzi/article/details/81708134 当从http 的response输出CSV文件的时候,设置为utf8的时候默认是 ...

  2. C++将UTF-8编码的文件转化为GB2312编码

    C++将UTF-8编码的文件转化为GB2312编码 我需要对一个html网页进行解析,html是使用UTF-8编码的.但是,我使用的visual Studio 19是使用gb2312进行编码的.当读入 ...

  3. 解决 Excel 打开 UTF-8 编码 CSV 文件乱码的 BUG

    直接用 Excel 2013 打开 UTF-8 编码的 CSV 文件会导致汉字 出现乱码. 原因可能是 Excel 以 ANSI 格式 打开,不会做编码识别. 打开 UTF-8 编码的 CSV 文件的 ...

  4. 【转】刨根究底字符编码之十一——UTF-8编码方式与字节序标记BOM

    一.UTF-8编码方式 1. 接下来将分别介绍Unicode字符集的三种编码方式:UTF-8.UTF-16.UTF-32.这里先介绍应用最为广泛的UTF-8. 为满足基于ASCII.面向字节的字符处理 ...

  5. 解决Excel打开UTF-8编码CSV文件乱码的问题

    最近在用QT读写CSV文件,发现将数据写入到CSV文件中,使用记事本打开文件是正常的,使用Excel打开,中文是乱码的,下面把原因和解决方法记录一下. 问题产生的原因 为什么excel打开utf-8存 ...

  6. Excel打开UTF-8编码CSV文件乱码的问题

    Excel乱码解决 场景 方法1:数据导入 方法2:指定格式导出 问题产生的原因 场景 在阿里云数仓用tunnel download导出来的CSV文件编码格式是UTF-8的,用Excel打开时就会出现 ...

  7. 解决Excel打开UTF-8编码CSV文件乱码的问题亲测有效

    前段时间用某软件导出了一个CSV文件,需要在Excel中处理并打印,但是我直接用Excel打开这个CSV文件却发现,文件中的所有中文字符都变成了乱码,经过自己的尝试,采用数据导入的方法解决了问题,后来 ...

  8. Matlab | MATLAB编辑器:无法使用GBK编码保存文件,请改用UTF-8编码保存文件(问题解决)

    ================================================ 博主github:https://github.com/MichaelBeechan 博主CSDN:h ...

  9. php 0xef 0xbb 0xbf,utf-8编码的csv文件,用excel打开乱码,解决办法,在输出前加 0xEF,0xBB,0xBF三个char...

    转自 http://blog.csdn.net/zcmssd/article/details/6086649 是由于输出的CSV文件中没有BOM. 什么是BOM? 在UCS 编码中有一个叫做" ...

  10. php文件代码采用UTF-8编码的BOM问题---转自CSDN---十方地藏---http://blog.csdn.net/webdesman...

    一个项目,代码编码均为utf-8编码,发现问题:在使用session的时候报错,错误如下: ------------------------------------------------- Warn ...

最新文章

  1. 2021年大数据Flink(四十四):​​​​​​扩展阅读 End-to-End Exactly-Once
  2. 计算机二级c语基础知识,计算机二级C语基础知识整理.doc
  3. aliyun oss 文件上传 java.net.SocketTimeoutException Read timed out 问题分析及解决
  4. 面试官问我会不会APP抓包,我..
  5. lua IDE all
  6. Actuator提供的endpoint
  7. 什么是Freedoc?Freedoc是什么?
  8. Java:Speedment 3.2的发布–现在启用轻量级数据库微服务
  9. 关于避免对toString()结果进行解析或基于逻辑的美德
  10. JVM(三)对象的生死判定和算法详解
  11. 微信 for Mac 3.1.0 测试版发布(附安装包),新增「发朋友圈」功能
  12. 如何把Sql Server2005 数据库转换成Access
  13. mysql ---- 约束
  14. 网易云音乐ubuntu 18.04下无法打开的解决办法
  15. java memcached incr_Memcached incr/decr 命令
  16. mapreduce阶段出现pending的原因及解决
  17. 微软ewf不还原注册表_Microsoft大胆计划将功能区还原回工具栏
  18. 不装oracle客户端plsql,不安装Oracle客户端使用PLSQL
  19. 南丁格尔玫瑰图的Python
  20. 编写一个520表白网站并发布Web教程

热门文章

  1. python最小值最大化和最大值最小化_OJ 21658::Monthly Expense(二分搜索+最小化最大值)...
  2. 深入理解Linux中内存管理
  3. 漫画:图的最短路径问题
  4. Linux进程的管理与调度(三) -- Linux进程ID号
  5. Linux 内核 SMP 代码追踪 --- cpumask
  6. Linux虚拟文件系统(节点路径搜索)
  7. Linux中tty框架与uart框架之间的调用关系剖析
  8. 红帽linux网络yum源,RedHat系统使用yum网络源
  9. python生成器的作用是什么_看完这篇,你就知道Python生成器是什么
  10. echart 地图 某个地区_「省份」Echart系列 | 绘制世界地图含中国各个省份(地图篇)(一) - seo实验室...