Есть ли разница между UTF8Encoding.UTF8.GetBytes и Encoding.UTF8.GetBytes? - PullRequest
8 голосов
/ 18 марта 2011

Сегодня я видел код, в котором используются UTF8Encoding.UTF8.GetBytes и Encoding.UTF8.GetBytes. Есть ли разница между ними?

Ответы [ 4 ]

11 голосов
/ 18 марта 2011

Нет никакой разницы.

Encoding.UTF8 - UTF8Encoding.

От MSDN (Encoding.UTF8):

Это свойство возвращает объект UTF8Encoding

Вместо UTF8Encoding.UTF8.GetBytes вы можете просто вызвать UTF8Encoding.GetBytes.

8 голосов
/ 04 марта 2014

Есть как минимум одно отличие.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();
    }
}
6 голосов
/ 18 марта 2011

UTF8Encoding наследует свое статическое свойство UTF8 от Encoding, поэтому они фактически являются одним и тем же свойством.

3 голосов
/ 18 марта 2011

Это просто два разных способа доступа к классу UTF8Encoding и вызова его статического члена GetBytes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...