utf-8文件的bom头的来由及去除方法
1. 什么是bom头
在utf-8编码文件中bom在文件头部,占用三个字节,用来标识该文件属于utf-8编码,现在已经有很多软件识别bom头,但还是有些不能识别bom头,比如php就不能识别bom头,这也就是用记事本编辑utf-8编码的php文件后,就会报错的原因。
2. 包含bom头文件的产生
在windows环境下,用记事本打开任何一个文本文件,另存为utf-8格式后,这样文件就自动被加上了bom头信息。
比较:
utf-8(含bom头)
![a7ff0b323c97cc1 a7ff0b323c97cc1](https://www.sjztyd.com/wp-content/uploads/2022/07/a7ff0b323c97cc1.gif)
utf-8(不含bom头)
![a7ff0b323c97cc1 a7ff0b323c97cc1](https://www.sjztyd.com/wp-content/uploads/2022/07/a7ff0b323c97cc1.gif)
(此图片来源于网络,如有侵权,请联系删除! )
从上图的比较中,可以很明显的看出,含bom头的文件多出三个字节 efbbbf。
3. bom头信息的去除方法
用notepad++打开文件,选择 格式 -> 以utf-8无bom格式编码,再保存就行。如下图:
4. 在php类的项目中,自动处理bom头信息(只需要将此文件放在项目根目录下,从浏览器访问即可)
<?php
if (isset($_get[dir])) { //设置文件目录
$basedir=$_get[dir];
} else {
$basedir=.;
}
checkdir($basedir);
function checkdir($basedir) {
if ($dh=opendir($basedir)) {
while (($file=readdir($dh)) !==false) {
if ($file !=. && $file !=..) {
if (!is_dir($basedir . “/” . $file)) {
echo “filename: $basedir/$file ” . checkbom(“$basedir/$file”) . ”
“;
} else {
$dirname=$basedir . “/” . $file;
checkdir($dirname);
}
}
}
closedir($dh);
}
}
function checkbom($filename, $auto=1) {
$contents=file_get_contents($filename);
$charset[1]=substr($contents, 0, 1);
$charset[2]=substr($contents, 1, 1);
$charset[3]=substr($contents, 2, 1);
ad:【百度云分享】大学生必备,互联网精品福利资源下载
未经允许不得转载:aft博客-给你需要的内容»utf-8文件的bom头的来由及去除方法
标签:织梦
上一篇织梦dede更新主页html里选项框空白的解决方法下一篇dedecms制作html+css代码运行框jquery版