UnicodeEncoding.Preamble 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取采用 UTF-16 格式编码的 Unicode 字节顺序标记(如果此对象配置为提供一个这样的标记)。
public:
virtual property ReadOnlySpan<System::Byte> Preamble { ReadOnlySpan<System::Byte> get(); };
public override ReadOnlySpan<byte> Preamble { get; }
member this.Preamble : ReadOnlySpan<byte>
Public Overrides ReadOnly Property Preamble As ReadOnlySpan(Of Byte)
属性值
如果此对象配置为提供一个字节,则包含 Unicode 字节顺序标记的字节范围;否则,默认跨度。
注解
该 UnicodeEncoding 对象可以提供一个谓词,它是一个字节范围,可以追加到编码过程生成的字节序列。 使用字节顺序标记 (代码点 U+FEFF
来设置编码字节序列,) 可帮助解码器确定字节顺序和转换格式或 UTF。 Unicode 字节顺序标记(BOM)按以下方式序列化(十六进制):
大尾字节顺序:
FE FF
小尾字节顺序:
FF FE
可以通过以下方式实例化 UnicodeEncoding 其 Preamble 为有效 BOM 的对象:
通过检索UnicodeEncoding或Encoding.BigEndianUnicode属性返回Encoding.Unicode的对象。
通过调用无 UnicodeEncoding() 参数构造函数来实例化 UnicodeEncoding 对象。
通过将参数UnicodeEncoding(Boolean, Boolean)的值
byteOrderMark
提供给或UnicodeEncoding(Boolean, Boolean, Boolean)构造函数来提供true
。
建议使用 BOM,因为它为文件提供几乎确定的编码标识,否则会丢失对其编码的引用,如未标记或未标记的 Web 数据或随机文本文件(如果企业没有国际关注)。 如果数据一致且正确标记,则通常避免用户问题。
对于提供编码类型的标准,BOM 有些多余。 但是,可以使用它来帮助服务器发送正确的编码标头。 或者,它可以用作回退,以防编码在其他情况下丢失。
使用 BOM 存在一些缺点。 例如,了解如何限制使用 BOM 的数据库字段可能很困难。 文件的串联可能也是一个问题,例如,当文件以这样一种方式进行合并时,不需要的字符会在数据中间结束。 但尽管有几个缺点,但强烈建议使用 BOM。
重要
若要确保已编码的字节正确解码,应为编码字节流的开头加上前缀。 请注意,该方法 GetBytes 不会将 BOM 追加到编码字节序列;在适当的字节流的开头提供 BOM 是开发人员的责任。