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

时间:2011-03-18 12:08:12

标签: c# .net windows-phone-7

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

4 个答案:

答案 0 :(得分:11)

完全没有区别。

Encoding.UTF8 UTF8Encoding

来自MSDN(Encoding.UTF8):

  

此属性返回UTF8Encoding对象

您只需拨打UTF8Encoding.UTF8.GetBytes

,而不是UTF8Encoding.GetBytes

答案 1 :(得分:7)

至少有一个区别。 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();
    }
}

答案 2 :(得分:6)

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

答案 3 :(得分:3)

这只是访问UTF8Encoding类并调用其静态成员GetBytes的两种不同方式。