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);