UTF-8文件的BOM头的来由及去除方法

主页 > 其他帮助 > 来源:未知 作者:admin 日期:2020-03-31 0

          
1. 什么是BOM头
    在utf-8编码文件中BOM在文件头部,占用三个字节,用来标识该文件属于utf-8编码,现在已经有很多软件识别BOM头,但还是有些不能识别BOM头,比如PHP就不能识别BOM头,这也就是用记事本编辑utf-8编码的PHP文件后,就会报错的原因。
 
2. 包含BOM头文件的产生
    在windows环境下,用记事本打开任何一个文本文件,另存为utf-8格式后,这样文件就自动被加上了BOM头信息。
    比较:
            utf-8(含BOM头)
            UTF-8文件的BOM头的来由及去除方法
            utf-8(不含BOM头)
            UTF-8文件的BOM头的来由及去除方法
    
    从上图的比较中,可以很明显的看出,含BOM头的文件多出三个字节 efbbbf。
 
3. BOM头信息的去除方法
    用Notepad++打开文件,选择 格式 -> 以UTF-8无BOM格式编码,再保存就行。如下图:
 
4. 在PHP类的项目中,自动处理BOM头信息(只需要将此文件放在项目根目录下,从浏览器访问即可)
01 <</font>?php
02  
03 if (isset($_GET['dir'])) { //设置文件目录  
04     $basedir = $_GET['dir'];
05 else {
06     $basedir = '.';
07 }
08  
09 checkdir($basedir);
10  
11  
12 function checkdir($basedir) {
13     if ($dh = opendir($basedir)) {
14         while (($file = readdir($dh)) !== false) {
15             if ($file != '.' && $file != '..') {
16                 if (!is_dir($basedir . "/" . $file)) {
17                     echo "filename: $basedir/$file " . checkBOM("$basedir/$file") . "
18 ";
19                 else {
20                     $dirname = $basedir . "/" . $file;
21                     checkdir($dirname);
22                 }
23             }
24         }
25         closedir($dh);
26     }
27 }
28  
29  
30 function checkBOM($filename, $auto = 1) {
31     $contents = file_get_contents($filename);
32     $charset[1] = substr($contents, 0, 1);
33     $charset[2] = substr($contents, 1, 1);
34     $charset[3] = substr($contents, 2, 1);

转载时必须以连接形式注明作者和原始出处 - 吾爱技术网络工作室 - 5234w.com


上篇:网站为什么要做301跳转到www呢

下篇:浏览器急速模式兼容模式中文乱码