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

软件教程 2024-02-01 07:00:08

1. 甚么是BOM头

在utf-8代码文档中BOM在文档颈部,挤占四个二进制,用以标记该文档归属于utf-8代码,那时早已有许多应用软件辨识BOM头,但却是很多无法辨识BOM头,比如说PHP就无法辨识BOM头,这也是用书签撰稿utf-8代码的PHP文档后,就会收起的其原因。
2. 包涵BOM头文档的造成
在windows自然环境下,用书签关上任何人两个文本文档,实用工具utf-8文件格式后,这种文档就手动被加之了BOM头重要信息。
    较为:
            utf-8(含BOM头)
            utf8和utf8bom UTF-8文件的BOM头的来由及去除方法_https://www.ybmzs.com_软件教程_第1张
            utf-8(不含BOM头)
            utf8和utf8bom UTF-8文件的BOM头的来由及去除方法_https://www.ybmzs.com_软件教程_第2张

(此相片源于互联网,如有侵权行为,请联络删掉! )

    从上图的较为中,能很显著的窥见,含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);

发表回复