Console.ReadLine возвращает пустую строку для ввода в кодировке Unicode, когда кодировка ввода / вывода - это Encoding.UTF8? - PullRequest
0 голосов
/ 15 октября 2018

Таргетинг netcoreapp2.1 с этим кодом:

static void Main()
{
    Console.InputEncoding = Console.OutputEncoding = Encoding.UTF8;
    while (true)
    {
        var line = Console.ReadLine();
        Console.WriteLine($"Length: {line.Length}");
        Console.WriteLine($"Bytes: {string.Join(", ", Encoding.UTF8.GetBytes(line).Select(b => b.ToString()))}");
        Console.WriteLine(line);
    }
}

Когда я набираю что (русское слово), тогда вывод:

Length: 3
Bytes: 0, 0, 0
<<there is an empty line here>>

Когда я набираю Hello world , вывод будет:

Length: 11
Bytes: 72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100
Hello world

Если я установлю кодировку ввода / вывода на Encoding.Unicode, тогда она будет работать как положено (русское слово дает шесть байтовкак и следовало ожидать).Что дает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...