`
ya916
  • 浏览: 2998 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

字符编码之 BOM(Byte Order Mark)

阅读更多
BOM 标示叫 “ZERO WIDTH NO-BREAK SPACE” 即没有宽度的空格符,本质上是 null值,但是不同与编程语言中的 null.

BOM, unicode 字符标识, 常被用来标识文件编码(UTF-8/16/32), 十进制编码为“65279”. 通常放在文件开头, 用来标记多字节编码文件的编码类型和字节顺序(big/little Endian).

对于UTF-8/16/32而言,它们名字中的8/16/32指的是编码单位是多少位的,也就是说,它们的编码单位分别是8/16/32位,
换算成字节就是1/2/4字节,如果是多字节,就要牵扯到字节序,UTF-8以单字节为编码单位,所以不存在字节序。


对于UTF-8来说,BOM标记的有无并不是必须的,是可选的,因为UTF8字节没有顺序,不需要标记.
也就是说一个UTF-8文件可能有BOM,也可能没有BOM.

windows上面的notepad等程序在打开文件的时候(unicode文件)会自动添加 EF BB BF 三个字节(BOM)
然而这个只是微软暗自作的标记, 其它平台上不一定会对UTF-8文本文件做个这样的标记。
微软的一些软件会做这种检测,但有些软件不做这种检测, 而把它当作正常字符处理。(乱码问题产生了)

引用
UTF-8 BOM   [ EF BB BF ]

UTF-16  BOM  [ FF FE ]

UTF-16  BE BOM [ FE FF ]

UTF-32  BOM  [ FF FE 00 00 ]

UTF-32 BE BOM [ 00 00 FE FF ]
0
1
分享到:
评论

相关推荐

    php UTF-8、Unicode和BOM问题

    UTF-8签名(UTF-8 signature)也叫做BOM(Byte Order Mark),是UTF编码方案里用于标识编码的标准标记。BOM,是UTF编码方案里用于标识编码的标准标记,在UTF-16里本来是FF FE,变成UTF-8就成了EF BB BF。这个标记是...

    判断字符编码格式代码

    BOM(Byte Order Mark)检测 BOM是一种特殊的字符序列,通常出现在文件的开头,用来标识文件的编码格式和字节顺序。代码首先检查是否存在BOM标记: - **UTF-8的BOM**:0xEF, 0xBB, 0xBF - **Big Endian Unicode ...

    java获取文件编码(判断有无BOM)

    文件编码决定了字符集的表示方式,而BOM(Byte Order Mark)则是一种特殊的Unicode标记,用于标识文件的编码类型。本文将详细介绍如何在Java中获取文件的编码并判断文件是否带有BOM。 首先,让我们了解一下什么是...

    字符编码详情.pdf

    3. **BOM(Byte Order Mark)** - **简介**:BOM是一个特殊的字符序列,用来标记文本文件的字节顺序(即Big Endian还是Little Endian)以及编码方式。 - **特点**:UTF-8、UTF-16等编码方式可以带有BOM标志,但...

    嵌入式字符编码(经典)(ucs2,+unicode,+utf8,+gb2312)[借鉴].pdf

    字符编码的版本更新,如文档中提到的V1.4添加了BOM(Byte Order Mark),是为了解决多字节编码中字节顺序的问题,帮助软件识别数据的编码格式。BOM在UTF-8中通常不必要,但在UTF-16或UTF-32等编码中是必需的。 总结...

    JAVA_字符编码

    在处理文件I/O时,还需要注意文件的BOM(Byte Order Mark)。UTF-8编码的文件可能包含一个BOM标志,这有时会影响文件的读取。如果你不想处理BOM,可以在创建`InputStreamReader`或`OutputStreamWriter`时指定不包含...

    php utf-8编码去bom小工具

    标题“php utf-8编码去BOM小工具”指的是一个PHP脚本,专门用于去除UTF-8编码的文件开头的BOM(Byte Order Mark)。在UTF-8编码中,BOM是一个可选的字节顺序标记,用于标识文件的字符编码格式。然而,在某些情况下,...

    字符编码之间的转换规则与实现

    例如,保存文本文件时,通常会在文件头部添加BOM(Byte Order Mark)来标识其使用的是UTF-8编码。而在网络传输中,HTTP协议允许通过`Content-Type`头指定字符编码,以确保接收端正确解析内容。 总结来说,字符编码...

    自动编码识别 BOM

    BOM,全称Byte Order Mark,是一种特殊的Unicode字符,用于标识文件的编码格式。熊猫看书作为一款阅读软件,能自动识别包括GBK、UTF8、UTF-16LE、UTF-16BE和BIG5在内的五种中国地区常见编码格式,从而确保用户能够...

    C语言字符编码转换UNICODE、GBK、UTF-8互相转换

    这可能需要一些预处理,例如检查BOM(Byte Order Mark)或根据文件的元信息来判断。 2. **解码**:将原始编码的数据解码成Unicode字符数组。对于GBK,你可以使用第三方库,如iconv或Windows API中的...

    一个判断字符串编码类型的类,支持多种编码

    1. 分析字节序列:通过检查字符串的字节模式,如BOM(Byte Order Mark),来推断其编码类型。例如,UTF-8和UTF-16都可能有BOM标识其编码。 2. 对比解码:尝试使用多种常见的编码方式对字符串进行解码,然后比较解码...

    Java字符编码及获取文件编码

    通常,我们需要读取文件的前几个字节,然后基于这些字节的特定模式(如BOM,Byte Order Mark)来猜测编码。 Apache Commons Lang库提供了`org.apache.commons.io.CharsetUtils`类,其中的`detectCharset()`方法可以...

    文件汉字字符编码查看

    例如,UTF-8编码的文件通常以特定的字节序列(0xEF, 0xBB, 0xBF)作为开头,称为BOM(Byte Order Mark),而GBK编码的文件则没有这样的标记。 一旦确定了文件的正确编码,我们可以切换到相应的字符集进行查看或编辑...

    C#获取去除文件bom头后的内容

    在编程领域,尤其是在处理文本文件时,BOM(Byte Order Mark)是一个常见的概念,它用于标识文件的字符编码。在UTF-8编码中,BOM是一个特殊的字节序列`FF FE`,用以表明该文件是UTF-8编码。然而,在某些情况下,BOM...

    计算机字符编码.pdf

    BOM(Byte Order Mark)是UTF-8、Unicode大端模式和小端模式文件开头的几个非字符字节,用于标识编码类型。 2. ASCII码:ASCII码是最早的字符编码标准,由美国国家标准协会制定,定义了128个字符,包括数字、英文大...

    BOM.rar_BOM_bom usb_字符串匹配

    BOM通常指的是Byte Order Mark(字节顺序标记),它是一种特殊的Unicode字符,用于标识文件的字符编码方式。USB则是Universal Serial Bus(通用串行总线)的缩写,是计算机硬件接口的一种,用于设备之间的数据传输。...

    文件BOM批量删除工具

    BOM,即Byte Order Mark,是在某些Unicode编码中用于标识字节顺序的特殊字符。在UTF-16和UTF-32中,BOM的存在是为了让解析器知道字节的顺序,但在UTF-8中,BOM并不是必需的,有时反而可能会引起问题,比如在某些编程...

    java处理BOM头的XML

    BOM(Byte Order Mark)是Unicode字符集中的一个特殊字符,用于标识文本的编码方式。在UTF-16编码中,BOM通常出现在文件的开头,用来区分大端序(UTF-16BE)和小端序(UTF-16LE)。在UTF-8编码中,BOM是可选的,但...

    UTF8.rar_UTF8_字符编码转换

    5. BOM(Byte Order Mark):在UTF-16和UTF-32中,用于标识字节顺序,但在UTF-8中不必要,因为其字节顺序是固定的。 在实际应用中,处理字符编码转换时可能会遇到的问题包括乱码、编码不一致、无法识别的字符等。...

Global site tag (gtag.js) - Google Analytics