UTF-8文件的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头)

            

(此图片来历于网络,如有侵权,请接洽删除! )

(此图片来历于网络,如有侵权,请接洽删除! )

    

    从上图的较量中,可以很明明的看出,含BOM头的文件多出三个字节 efbbbf。

 

3. BOM头信息的去除要领

    用Notepad++打开文件,选择 名目 -> 以UTF-8无BOM名目编码,再生存就行。如下图:

 

4. 在PHP类的项目中,自动处理惩罚BOM头信息(只需要将此文件放在项目根目次下,从欣赏器会见即可)

<</font>?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);  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsdpgp.html