什么是BOM(Byte Order Mark)?

BOM(Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码,但它对于文件的读者来说是不可见字符。

下表列出不同的字符编码的BOM


编码 BOM (十六进制) BOM (十进制) CP1252 字符
UTF-8[t 1] EF BB BF 239 187 191 ???
UTF-16 (BE) FE FF 254 255 t?
UTF-16 (LE) FF FE 255 254 ?t
UTF-32 (BE) 00 00 FE FF 0 0 254 255 ??t? (? refers to the ASCII null character)
UTF-32 (LE) FF FE 00 00 255 254 0 0 ?t?? (? refers to the ASCII null character)
UTF-7[t 1] 2B 2F 76 38
2B 2F 76 39
2B 2F 76 2B
2B 2F 76 2F[t 2]
2B 2F 76 38 2D[t 3]
43 47 118 56
43 47 118 57
43 47 118 43
43 47 118 47
43 47 118 56 45
+/v8
+/v9
+/v+
+/v/
+/v8-
UTF-1[t 1] F7 64 4C 247 100 76 ÷dL
UTF-EBCDIC[t 1] DD 73 66 73 221 115 102 115 Ysfs
SCSU[t 1] 0E FE FF[t 4] 14 254 255 ?t? (? represents the ASCII “shift out” character)
BOCU-1[t 1] FB EE 28 251 238 40 ??(
GB-18030[t 1] 84 31 95 33 132 49 149 51 ?1?3

参考:http://en.wikipedia.org/wiki/Byte_order_mark

时间: 2024-10-11 00:52:51

什么是BOM(Byte Order Mark)?的相关文章

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

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

字节顺序标记——BOM,Byte Order Mark

定义 BOM(Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码. 介绍 UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM.但不含 BOM 的 UTF-8 才是标准形式,在 UTF-8 文件中放置 BOM 主要是微软的习惯(顺便提一下:把带有 BOM 的小端序 UTF-16 称作「Unicode」而又不详细说明,这也是微软的习惯). 「UTF-8」和「带 BOM 的 UTF-8」的区

理解字节序 [Understanding Big and Little Endian Byte Order]

原文地址 (本文对于字节序讲解的很清楚,容易理解.) Problems with byte order are frustrating, and I want to spare you the grief I experienced. Here's the key: Problem: Computers speak different languages, like people. Some write data "left-to-right" and others "rig

字节序(byte order)和位序(bit order)

字节序(byte order)和位序(bit order) ?在网络编程中经常会提到网络字节序和主机序,也就是说当一个对象由多个字节组成的时候需要注意对象的多个字节在内存中的顺序. ?以前我也基本只了解过字节序,但是有一天当我看到ip.h中对IP头部结构体struct iphdr的定义时,我发现其中竟然对一个字节中的8个比特位也区分了大小端,这时我就迷糊了,不是说大小端只有在多个字节之间才会有区分的吗,为什么这里的定义却对一个字节中的比特位也区分大小端呢? ?下面我们先看一下struct iph

Converting integers to and from host to network byte order

#!/usr/bin/env python import socket def convert_integer(): data = 1234 #32bit print "Original:%s =>Long host byte order:%s, Network byte order: order:%s"%(data,socket.ntohl(data),socket.htonl(data)) #16bit print "Original:%s =>Long ho

Byte Order, Size, and Alignment

[Byte Order, Size, and Alignment] By default, C types are represented in the machine’s native format and byte order, and properly aligned by skipping pad bytes if necessary (according to the rules used by the C compiler). Alternatively, the first cha

检查PHP文件头BOM

前些日子本地文件上传到服务器上,某些文件头部总是出现一条空白,无论怎么修改文件都无法去除空白,用firebug查看header部分同样有一片空白,删除后空白消失,但是在文件里却无法找到那个空白的部分,纠结了好久也没解决;昨天则是后台登陆后显示空白,用的是frameset,单独使用某个部分内容是可以显示的,但是在后台首页index.php下用frameset却无法显示,今天上网查了下,刚好有一个帖子也是说frameset无法显示的问题,有谈到是PHP头文件BOM的影响,之前也了解过PHP头部BOM

php工程部署在centos系统,产生页面布局错乱、点击按钮和链接无响应的解决办法(去BOM头)

1.UTF-8 BOM 可能导致CSS样式错乱: utf-8 是一种在web应用中经常使用的一种 unicode 字符的编码方式,使用 utf-8 的好处在于它是一种变长的编码方式,对于 ANSII 码编码长度为1个字节,这样的话在传输大量 ASCII 字符集的网页时,可以大量节约网络带宽. 使用 utf-8 编码来编写网页的时候, 往往会因为 bom (Byte Order Mark) 的问题,导致网页中经常出现一些不明的空行或者乱码字符. 这些都是因为 utf-8 编码方式对于 bom 不是

字符编码终极笔记:ASCII、Unicode、UTF-8、UTF-16、UCS、BOM、Endian

很详细很不错,转过来学习一下: 转载自:http://www.cnblogs.com/lidabo/archive/2013/11/27/3446518.html 1.字符编码.内码,顺带介绍汉字编码 字符必须编码后才能被计算机处理.计算机使用的缺省编码方式就是计算机的内码.早期的计算机使用7位的ASCII编码,为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5. GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号.汉字区的内码范围