有没有办法设置Encoding.UTF8实例提供BOM为false

时间:2013-03-18 15:26:15

标签: c# xml

我知道我们可以使用UTF8Encoding创建UTF8Encoding(false)的实例,该实例不提供Unicode字节顺序标记。但我也遇到了另一种获取UTF8Encoding实例引用的方法是Encoding.UTF8。问题是:我们可以将静态Encoding.UTF8实例的BOM属性设置为false,还是始终提供BOM?

1 个答案:

答案 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,但出于多种原因这不是一个好主意。