Как кодируется строка в байты
Каким образом набор символов преобразуется в байты? Допустим из этого кода:
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("Привет, мир!"); // кодируется не правильно