开发者

C# Unicode string output

I have a function to convert a string to a Unicode string:

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

But when I am calling this function the output result is wrong. It looks like my function is not working.

Console.WriteLine(UnicodeString("добры дзень")) printing on console just questions like that: ????? ????

Is there a way to say to console to display it correct?

UPDATE

开发者_运维知识库It looks like the problem not in Unicode. I think maybe it is displaying question marks because I am not having the correct locale in the system (Windows 7)?

Is there a way to make it work without changing locale?


First, change the output encoding to UTF8:

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

Now you'll still see question marks. The reason is that the default console's font doesn't support Cyrillic letters. Change the font of the console:

C# Unicode string output

If you're lucky, you should find a different font with Unicode support:

C# Unicode string output

Change the font, and you should be able to see your text:

C# Unicode string output

In the general case, if you want to display all Unicode characters reliably, the Console is probably not right for you. See also: C# console font (the comments are interesting too)


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

The string text is already in Unicode. All internal C# strings are Unicode. When you convert it to ASCII you lose characters. That is why you get ????? ????.


Just do plain simple Console.WriteLine("добры дзень"); no need for any conversion.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜