Encoding.Preamble 属性

定义

在派生类中重写时,返回包含指定所用编码的字节序列的范围。

public:
 virtual property ReadOnlySpan<System::Byte> Preamble { ReadOnlySpan<System::Byte> get(); };
public virtual ReadOnlySpan<byte> Preamble { get; }
member this.Preamble : ReadOnlySpan<byte>
Public Overridable ReadOnly Property Preamble As ReadOnlySpan(Of Byte)

属性值

包含指定所用编码的字节序列的字节范围,如果不需要报头,则为长度为零的范围。

注解

此对象还可以 Encoding 提供前导码,它是一个字节序列,可以作为编码过程中所产生的字节的前缀。 如果引言包含字节顺序标记(在 Unicode、码位 U + FEFF 中),则它有助于解码器确定字节顺序和转换格式或 UTF。

Unicode 字节顺序标记(BOM)按以下方式序列化(十六进制):

  • UTF-8: EF BB BF

  • UTF-16 大 endian 字节顺序: FE FF

  • UTF-16 little endian 字节顺序: FF FE

  • 32大 endian 字节顺序: 00 00 FE FF

  • 32 little endian 字节顺序: FF FE 00 00

应使用 BOM,因为它提供了对文件的编码的几乎某些标识,例如,对对象的引用丢失 Encoding 、未标记或标记不正确或标记为不正确的 web 数据或随机文本文件。 如果数据一致且标记正确(最好是 UTF-8 或 UTF-16),通常可以避免用户问题。

对于提供编码类型的标准,BOM 有些多余。 但是,可以使用它来帮助服务器发送正确的编码标头。 或者,它可以用作回退,以防编码在其他情况下丢失。

使用 BOM 存在一些缺点。 例如,了解如何限制使用 BOM 的数据库字段可能很困难。 文件的串联可能也是一个问题,例如,当文件以这样一种方式进行合并时,不需要的字符会在数据中间结束。 尽管有几个缺点,但强烈建议使用 BOM。

有关字节顺序和字节顺序标记的详细信息,请参阅unicode 主页上的 unicode 标准。

注意

若要确保编码的字节解码正确,应使用前导码作为编码字节的前缀。 但是,大多数编码不提供前导码。 若要确保已编码的字节解码正确,应使用 Unicode 编码,即、、 UTF8EncodingUnicodeEncodingUTF32Encoding ,使用前导码。

适用于