Как кодируется строка в байты

Каким образом набор символов преобразуется в байты? Допустим из этого кода:

FileInfo fi = new FileInfo("actress.txt");
using(StreamWriter sw = fi.CreateText()) {
  sw.WriteLine("Hello");
  sw.Write("World");

}

byte[] byfiles = File.ReadAllBytes(fi.FullName);
using(StreamWriter sw = fi.CreateText()) {
  foreach(byte task in byfiles) {
    sw.WriteLine(task);
  }
}

Получается набор таких байтов:

72
101
108
108
111
13
10
87
111
114
108
100

Ответы (1 шт):

Автор решения: return

Всё просто. Перейдите на этот сайт и сопоставьте байт с значением символа, получите ваш текст. 13 10 = \r\n – перенос на новую линию (aka CRLF). Данный набор байтов представлен в UTF8 кодировке, т. к. это стандартная кодировка у StreamWriter.


Правильно:

using var stream = File.OpenWrite("file.txt");
using var writer = new StreamWriter(stream, Encoding.Unicode);
writer.WriteLine("Привет, мир!");

Неправильно:

using var stream = File.OpenWrite("file.txt");
using var writer = new StreamWriter(stream);
writer.WriteLine("Привет, мир!"); // кодируется не правильно
→ Ссылка