C#Unicode字符串输出

Reg*_*Reg 23 .net unicode c#-4.0

我有一个函数将字符串转换为Unicode字符串:

private string UnicodeString(string text)
{
    return Encoding.UTF8.GetString(Encoding.ASCII.GetBytes(text));
}
Run Code Online (Sandbox Code Playgroud)

但是当我调用此函数时,输出结果是错误的.看起来我的功能不起作用.

Console.WriteLine(UnicodeString("????? ?????")) 在控制台上打印只是这样的问题: ????? ????

有没有办法说控制台显示它是正确的?

UPDATE

它似乎不是Unicode中的问题.我想也许它显示问号因为我在系统中没有正确的区域设置(Windows 7)?

有没有办法让它在不改变语言环境的情况下工作?

Kob*_*obi 42

首先,将输出编码更改为UTF8:

Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine("????? ?????");
Run Code Online (Sandbox Code Playgroud)

现在你仍然会看到问号.原因是默认控制台的字体不支持西里尔字母.更改控制台的字体:

在此输入图像描述

如果你很幸运,你应该找到一个支持Unicode的不同字体:

在此输入图像描述

更改字体,您应该能够看到您的文字:

在此输入图像描述

在一般情况下,如果要可靠地显示所有Unicode字符,则控制台可能不适合您.另请参阅:C#控制台字体(评论也很有趣)