.net UTF8Encoding.UTF8.GetBytes和编码.UTF8.GetBytes之间有什么区别吗?

ugmeyewa  于 2022-12-14  发布在  .NET
关注(0)|答案(4)|浏览(237)

今天我看到一个代码,里面用了UTF8Encoding.UTF8.GetBytesEncoding.UTF8.GetBytes,有什么区别吗?

vhmi4jdf

vhmi4jdf1#

一点区别都没有。
就是 *
来自MSDN(Encoding.UTF8):
此属性返回UTF8Encoding对象
您可以简单地调用UTF8Encoding.GetBytes来代替Encoding.UTF8.GetBytes

wkyowqbh

wkyowqbh2#

至少有一点不同。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();
    }
}
ergxz8rk

ergxz8rk3#

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

w8f9ii69

w8f9ii694#

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

相关问题