перевод из koi8-r c#
Получаю ответ от сервера в кодировке koi8r, сразу пытаюсь преобразовать это в ASCII но на месте кириллицы появляются "?", тогда как с иностранным языком всё работает.
do
{
numberOfBytesRead = stream.Read(readingData, 0, readingData.Length);
completeMessage.AppendFormat("{0}", Encoding.ASCII.GetString(readingData, 0, numberOfBytesRead));
}
while (stream.DataAvailable);
Насколько я понял, кодировка Koi8r основана на ASCII и значения в диапазоне 0-127 у них вроде как совпадают, поэтому знаки(наверное) и иностранный язык отображаются корректно.
Как сделать, чтобы и русский язык тоже правильно работал? Из идей, было записать входной поток в список байт, а потом распечатывать его предварительно проверяя с совпадающим кодом из таблицы кодировки, но мне кажется, что должно быть более правильное решение.
С GetEncoding("koi8r") тоже не получилось.
Ответы (1 шт):
В .NET Core часть кодировок была исключена из поддерживаемых по умолчанию и вынесена в отдельный пакет.
Установите его в проект и добавьте в Startup.cs строку:
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);