UTF8有BOM和无BOM

UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM。
所以不含 BOM 的 UTF-8 才是标准形式,在 UTF-8 文件中放置 BOM 主要是微软的习惯(顺便提一下:把带有 BOM 的小端序 UTF-16 称作「Unicode」而又不详细说明,这也是微软的习惯)。
BOM(byte order mark)是为 UTF-16 和 UTF-32 准备的,用于标记字节序(byte order)。微软在 UTF-8 中使用 BOM 是因为这样可以把 UTF-8 和 ASCII 等编码明确区分开,但这样的文件在 Windows 之外的操作系统里会带来问题。

「UTF-8」和「带 BOM 的 UTF-8」的区别就是有没有 BOM。即文件开头有没有 U+FEFF。

时间: 2024-11-13 07:52:12

UTF8有BOM和无BOM的相关文章

UTF-8 有BOM和无BOM

BOM(byte order mark)是为 UTF-16 和 UTF-32 准备的,用于标记字节序(byte order).微软在 UTF-8 中使用 BOM 是因为这样可以把 UTF-8 和 ASCII 等编码明确区分开,但这样的文件在 Windows 之外的操作系统里会带来问题.「UTF-8」和「带 BOM 的 UTF-8」的区别就是有没有 BOM.即文件开头有没有 U+FEFF.

PHP的文件格式应该以UTF-8无BOM编码

前一段时间写PHP,经常在解析文件之前就要对数据进行处理判断,并以header()的方式进行页面跳转.然而后来将文件放到 linux 服务器时常碰到header()解析出错的情况,而在 windows 开发环境中本地调试无任何问题.后来发现是文件编码格式的原因,转换成以UTF-8无BOM编码格式的文件就不会报错了. 附上BOM的解释:https://en.wikipedia.org/wiki/Byte_order_mark 以及知乎上的讨论:「带 BOM 的 UTF-8」和「无 BOM 的 UT

【分享】Android Studio专用文件转换工具:把ANSI文件批量另存为无BOM的UTF-8文件

[分享]Android Studio专用文件转换工具:把ANSI文件批量另存为无BOM的UTF-8文件 在Andoird Studio下编译java文件时,经常会出现像下面的错误: Error:(29, 43) 閿欒: 缂栫爜UTF-8鐨勪笉鍙槧灏勫瓧绗? 在这里,分享一个工具:ANSI文件批量另存为无BOM的UTF-8文件: 把下面代码用记事本存为AndroidStudioJava编码.vbs,双击即可使用: on error resume next Set WshShell=WScrip

UTF-8无BOM编码对SSI的影响

最近在用SSI(Server Side Includes)加载子模块的时候发现一个奇怪的现象,加载完成后的网页老是CSS有问题,被加载模块渲染后老是有空白部分.下面给出简单的示例. 文件a.html的内容如下: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <style> 5 *{ 6 margin: 0; 7 padding: 0; 8 } 9 #ah{ 10 border: solid 2px red; 11 } 12 #b

UTF-8和UTF-8无BOM,一个会导致文件中中文变量无法匹配的bug

昨晚用dom4j中的selectSingleNode解析xml,匹配节点. 发现匹配不到,但是确实存在该节点 将regex改为regex1后则可以匹配,也就是说文件中的"阿里旺旺"和程序中的"阿里旺旺"不相等. 此时有经验的人都会想到编码问题,于是我尝试各种编码发现都不行,结果最后在此处发现UTF-8还有两种格式 尝试讲文件换成UTF-8无BOM格式则匹配成功 查阅资料发现BOM其实是一个编码标识符,用来标识该文件的编码的,因此windows下程序读取文件的时候会有

C#保存文件为无BOM的utf8格式

如图所示,发现用C#的 File.WriteAllLines 方法,无论怎么设置,最终生成的文件都是 PC utf8,也就是CRLF,用SVN进行提交的时候,显示左侧为utf8,右侧为utf8 BOM文件,甚是蛋疼. 最后的解决方法: File.WriteAllText(strLuaFilePath, string.Join("\n", fileContentList.ToArray()), new System.Text.UTF8Encoding(false)); 稍微普及一下常见的

Visual Studio 2017 UTF-8 无 BOM 一站式解决办法

问题背景:最近捡起C++,使用VS 2017平台.因为以前的编程习惯,喜欢使用UTF-8 无 BOM 的编码格式,好让自己的代码全球通用.但是VS 2017 对这个问题不是很友善.但最终找到了解决办法. 问题标签: UTF-8 无 BOM 乱码:UTF-8 无 BOM "常量中有换行符"错误提示:window cmd UTF-8 无 BOM 显示乱码: UTF-8 without BOM garbled; UTF-8 without BOM "Line breaks in c

UTF-8文件的Unicode签名BOM(Byte Order Mark)问题记录(EF BB BF)

背景 楼主测试的批量发送信息功能上线之后,查看后台运行日志,发现存在少量的ERROR日志,提示手机号码格式不正确. 之前没有出现过这样的问题,找运营要了上传的txt发送列表,发现格式是要求的UTF-8,且号码是符合规则的,反复查看未发现异常. 因为博主还有别的需求,所以直接反馈给了开发,让开发定位. 定位过程 两天之后,开发给了我两个文件,问我有没有办法找出这两个文件的不同.我看了一下,文件内容完全相同. 后来使用软件beyond compare进行十六进制对比终于发现了区别, 其中一个第一行多

Oracle EBS-SQL (BOM-11):检查无BOM的装配件.sql

select     msi.segment1, msi.description, . msi.item_type, msi.inventory_item_status_code 状态 from    inv.mtl_system_items_b   msi where  msi.organization_id =  X and msi.item_type                 in ('FG','SA') and msi.inventory_item_status_code <>