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