我知道我们可以使用UTF8Encoding
创建UTF8Encoding(false)
的实例,该实例不提供Unicode字节顺序标记。但我也遇到了另一种获取UTF8Encoding
实例引用的方法是Encoding.UTF8
。问题是:我们可以将静态Encoding.UTF8
实例的BOM属性设置为false,还是始终提供BOM?
答案 0 :(得分:2)
Encoding.UTF8返回一个静态的默认实例,该实例将始终包含BOM
[__DynamicallyInvokable]
public static Encoding UTF8
{
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries"), __DynamicallyInvokable] get
{
if (Encoding.utf8Encoding == null)
Encoding.utf8Encoding = (Encoding) new UTF8Encoding(true);
return Encoding.utf8Encoding;
}
}
我应该注意,该标志存储在一个私有布尔字段中,您可以通过反射将其设置为false,但出于多种原因这不是一个好主意。