C# 当输入/输出编码为encoding时,Console.ReadLine为unicode输入返回空字符串。UTF8?

C# 当输入/输出编码为encoding时,Console.ReadLine为unicode输入返回空字符串。UTF8?,c#,unicode,.net-core,C#,Unicode,.net Core,使用此代码定位netcoreapp2.1: static void Main() { Console.InputEncoding = Console.OutputEncoding = Encoding.UTF8; while (true) { var line = Console.ReadLine(); Console.WriteLine($"Length: {line.Length}"); Console.WriteLin

使用此代码定位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>>
Length: 11
Bytes: 72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100
Hello world

如果我将输入/输出编码设置为
encoding.Unicode
,那么它会按预期工作(俄语单词会像您预期的那样产生六个字节)。提供了什么?

在内部,字符串以Unicode(UTF16-LE)格式重新发布。在.Net核心控制台应用程序中,基本编码支持非常有限(您需要一个NuGet包来扩展它)。字体支持也是如此。对于控制台,请坚持使用Unicode。UTF-8写入文件。我希望
OutputEncoding
会影响
Console.WriteLine
,但不会影响
Console.ReadLine
。。。您是否尝试过调整
控制台.inpunecoding
?@marcGravel您可能错过了上面代码中我的
Main
方法的第一行;或者我可以更明确地说,“如果我设置输入/输出编码”意味着更改该行