0

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

4

1 回答 1

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,但这不是一个好主意,原因有很多。

于 2013-03-18T15:28:57.540 回答