备份博文内容

This commit is contained in:
YuCheng Hu 2025-04-29 00:52:13 +08:00
parent 3c31124dd4
commit ef9beb0623
No known key found for this signature in database
GPG Key ID: 6685280F6FDE8141

View File

@ -0,0 +1 @@
<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>