Единственная разница между Encoding.UTF8
и new UTF8Encoding()
заключается в том, что для первого активирована спецификация, но только имеет значение, если вызывается GetPreamble()
, поэтому при вызове GetBytes()
точно без разницы.
Я бы предложил вам обновить пример ввода и вывода из обеих кодировок.
Пример:
Encoding enc = new UTF8Encoding();
string s = "abc";
Console.WriteLine("new UTF8Encoding(), preamble: {0}",
BitConverter.ToString(enc.GetPreamble()));
Console.WriteLine("new UTF8Encoding(), payload: {0}",
BitConverter.ToString(enc.GetBytes(s)));
enc = Encoding.UTF8;
Console.WriteLine("Encoding.UTF8, preamble: {0}",
BitConverter.ToString(enc.GetPreamble()));
Console.WriteLine("Encoding.UTF8, payload: {0}",
BitConverter.ToString(enc.GetBytes(s)));
который пишет:
new UTF8Encoding(), preamble:
new UTF8Encoding(), payload: 61-62-63
Encoding.UTF8, preamble: EF-BB-BF
Encoding.UTF8, payload: 61-62-63