2013-03-18 27 views
0

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

回答

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私人布尔字段,但由于多种原因,这不是一个好主意。

+0

需要记住的一点是,无论此标志如何,编码器的GetBytes方法实际上都不包含BOM。 – EricLaw 2013-03-18 15:42:11

相关问题