端序记号
维基百科,自由的 encyclopedia
端序记号,或称位元组顺序记号(英语:byte-order mark,BOM)是位于码点U+FEFF
的统一码字符的名称。当以UTF-16或UTF-32来将UCS/统一码字符所组成的字串编码时,这个字符被用来标示其端序。它也被用来当做标示文件是以UTF-8、UTF-16或UTF-32编码的记号。
端序记号通常有几种涵义[1]:
端序记号的使用是选择性的。它的存在会干扰那些不希望档案开头出现非ASCII字元、但可以用其他方式处理文字流的软体对于UTF-8的使用。
统一码可以以8位元、16位元或32位元整数为单位进行编码。对于16位元和32位元的表示方法,从任意来源接收文本的电脑需要知道整数是以何种端序编码的。端序记号的编码方式与文件档案的其他部分相同,如果它的位元组被调换,就会变成一个非字元的统一码码位。因此,访问文本的过程中,可以透过检查这头几个位元组来确定端序,而不需要文字流本身以外的一些约定或元资料。一般来说,如果有必要,接收资料的电脑会将位元组换成自己的端序,不再需要端序记号进行处理。
每个统一码编码(包括统一码标准以外的编码,如UTF-7,见下表)的BOM位元组序列都不一样,而且这些序列都不可能出现在以其他编码储存的文字流的开头。因此,在文字流的开头放置一个编码的BOM,可以表明文本是统一码,并识别所使用的编码方案。这种对BOM字元的使用被称为“统一码签名”[2]。