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 是开发人员的责任。