\0 символ вместо русских букв .NET
При вводе текста буквами кириллицы вместо букв в строку записываются символы \0.
Ввожу "Привет", а записывается в переменную следующее:
Пробовал менять кодировку, не помогло. Винда стоит на английском, может в этом проблема..
\0 в консоли выглядят как обычные пробелы.
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
В русской винде по умолчанию в консоли стоит 866 кодовая страница. Если я выставляю UTF-8, то получаю такое же поведение, как у вас. Вы можете настроить кодовую страницу принудительно.
static void Main(string[] args)
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Console.OutputEncoding = Encoding.GetEncoding(866);
Console.InputEncoding = Encoding.GetEncoding(866);
Console.WriteLine($"Input [{Console.InputEncoding.CodePage}] {Console.InputEncoding.EncodingName}");
Console.WriteLine($"Output [{Console.OutputEncoding.CodePage}] {Console.OutputEncoding.EncodingName}");
string s = Console.ReadLine();
Console.WriteLine(s);
}
Вывод в консоль
Input [866] Cyrillic (DOS)
Output [866] Cyrillic (DOS)
привет, мир
привет, мир
Возможно прокатит, если вы только настроите InputEncoding, при этом можно не трогать OutputEncoding.
