C#Unicodestring输出

我有一个函数来将string转换为一个Unicodestring:

private string UnicodeString(string text) { return Encoding.UTF8.GetString(Encoding.ASCII.GetBytes(text)); } 

但是当我调用这个函数时,输出结果是错误的。 它看起来像我的function不工作。

Console.WriteLine(UnicodeString("добры дзень"))在控制台上打印只是这样的问题: ????? ???? ????? ????

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

UPDATE

它看起来像不是Unicode的问题。 我想也许这是显示问号,因为我没有在系统中的正确的语言环境(Windows 7)?

有没有办法让它工作,而不改变语言环境?

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

 Console.OutputEncoding = Encoding.UTF8; Console.WriteLine("добры дзень"); 

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

在这里输入图像描述

如果你幸运的话,你应该find一个支持Unicode的字体:

在这里输入图像描述

改变字体,你应该能够看到你的文字:

在这里输入图像描述

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

 private string UnicodeString(string text) { return text; } 

stringtext已经在Unicode中。 所有内部的C#string都是Unicode。 当您将其转换为ASCII时,会丢失字符。 这就是为什么你会得到????? ????。

只要做简单的Console.WriteLine("добры дзень"); 不需要任何转换。

您可以使用

 Encoding.GetEncoding(28595);