UTF8Encoding.UTF8.GetBytes和Encoding.UTF8.GetBytes之间有什么区别吗?

Vay*_*age 8 .net c# windows-phone-7

今天我看到了一个使用UTF8Encoding.UTF8.GetBytesEncoding.UTF8.GetBytes使用的代码.它们之间有什么区别吗?

Ode*_*ded 11

没有任何区别.

Encoding.UTF8 UTF8Encoding.

来自MSDN(Encoding.UTF8):

此属性返回UTF8Encoding对象

而不是UTF8Encoding.UTF8.GetBytes你可以简单地打电话UTF8Encoding.GetBytes.

  • 当然,当时的文档 (.NET Framework 4) 没有提到它,但当前的文档 (.NET Framework 4.5) 说它等效于 `new UTF8Encoding(true)`,它将发出一个 BOM。 (3认同)

小智 9

至少有一个区别.Encoding.UTF8将写入BOM而UTF8Encoding不会(默认情况下).看一下这个:

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        UTF8Encoding utf8 = new UTF8Encoding();
        UTF8Encoding utf8EmitBOM = new UTF8Encoding(true);

        Console.WriteLine("utf8 preamble:");
        ShowArray(utf8.GetPreamble());

        Console.WriteLine("utf8EmitBOM:");
        ShowArray(utf8EmitBOM.GetPreamble());

        Console.WriteLine("Encoding.UTF8 preamble:");
        ShowArray(Encoding.UTF8.GetPreamble());
   }

    public static void ShowArray(Array theArray) {
        foreach (Object o in theArray) {
            Console.Write("[{0}]", o);
        }
        Console.WriteLine();
    }
}
Run Code Online (Sandbox Code Playgroud)


Jon*_*nna 6

UTF8Encoding从Encoding继承其静态UTF8属性,因此它们实际上是相同的属性.