csdn/CSDN博文备份/UTF-8的BOM含义作用与注意事项-147598554.md
2025-04-29 00:52:13 +08:00

1 line
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>UTF-8的BOM是什么有何作用。</p> <br><p></p> <br><p></p> <br><p class="img-center"><a href="https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/9/9/99b11fdbb112a2caeac81ba79f61198b8420a0a7.png" rel="nofollow"><img alt="image" height="254" src="https://i-blog.csdnimg.cn/img_convert/98d91f3def52ebfd1a2b58364fcb22f7.png" width="499" /></a></p> <br><p></p> <br><p><strong>BOM: Byte Order Mark</strong></p> <br><p>UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行。</p> <br><p>一般采用UTF-8无BOM格式即可。</p> <br><p>BOMbyte-order mark即字节顺序标记它是插入到以UTF-8、UTF16或UTF-32编码Unicode文件开头的特殊标记用来识别Unicode文件的编码类型。对于UTF-8来说BOM并不是必须的因为BOM用来标记多字节编码文件的编码类型和字节顺序big-endian或little-endian</p> <br><p>在绝大多数编辑器中都看不到BOM字符因为它们能理解Unicode去掉了读取器看不到的题头信息。若要查看某个Unicode文件是否以BOM开头可以使用十六进制编辑器。下表列出了不同编码所对应的BOM。</p> <br><p></p> <br><pre><code>BOM Encoding<br>EF BB BF UTF-8<br>FE FF UTF-16 (big-endian)<br>FF FE UTF-16 (little-endian)<br>00 00 FE FF UTF-32 (big-endian)<br>FF FE 00 00 UTF-32 (little-endian)<br></code></pre> <br><p>为了识别 Unicode 文件Microsoft 建议所有的 Unicode 文件应该以 ZERO WIDTH NOBREAK SPACEU+FEFF字符开头。这作为一个“特征符”或“字节顺序标记byte-order markBOM”来识别文件中使用的编码和字节顺序。</p> <br><p></p> <br><p></p> <br><p class="img-center"><a href="https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/3/8/3888d07f1c7625dd1551dc628209b03faaa5d22d.png" rel="nofollow"><img alt="image" height="388" src="https://i-blog.csdnimg.cn/img_convert/58175e3b1a81f890f29193dbca48caf8.png" width="690" /></a></p> <br><p></p> <br><p>Linux/UNIX 并没有使用 BOM因为它会破坏现有的 ASCII 文件的语法约定。</p> <br><p></p> <br><p>UTF-8的BOM(Byte Order Mark)是一个特殊的字符标记,它由三个字节组成:<code>EF BB BF</code>(十六进制表示)。</p> <br><h3>主要作用</h3> <br><ol><li><strong>文件编码标识</strong>BOM可以明确标识文件是以UTF-8编码保存的帮助软件正确识别编码方式。</li><li><strong>兼容性</strong>某些Windows程序如记事本使用BOM来区分UTF-8和其他编码。</li></ol> <br><h3>注意事项</h3> <br><ul><li>UTF-8实际上不需要BOM因为它没有字节序问题与UTF-16和UTF-32不同</li><li>在某些情况下BOM可能导致问题 <br> <ul><li>网页开发中可能导致HTTP头部被破坏</li><li>在Unix/Linux系统中的脚本文件中可能导致"#!"行无法被正确识别</li><li>某些老旧系统可能无法正确处理带BOM的文件</li></ul> </li></ul> <br><h3>实践建议</h3> <br><ul><li>如果文件只在Windows环境使用可以保留BOM</li><li>如果文件需要跨平台使用或在网络环境中使用通常建议不使用BOM</li></ul> <br><p>大多数现代文本编辑器允许您选择是否添加BOM标记当保存UTF-8文件时。</p> <br><p></p> <br><h3>Excel</h3> <br><p>当使用Excel 打开无 BOM 文件的时候,可能会出现字符乱码。</p> <br><p></p> <br><p><a href="https://www.isharkfly.com/t/utf-8-bom/17254" rel="nofollow" title="UTF-8的BOM含义、作用与注意事项 - 技术宅 - iSharkFly">UTF-8的BOM含义、作用与注意事项 - 技术宅 - iSharkFly</a></p>