How can I display extended Unicode character in a C# console?

若如初见. 提交于 2019-12-24 11:47:16

问题


I'm trying to display a set of playing cards, which have Unicode values in the 1F0A0 to 1F0DF range. Whenever I try to use chars with more than 4 chars in their code, I get errors. Is it possible to use these characters in this context? I'm using Visual Studio 2012.

char AceOfSpades = '\u1F0A0'; immediately upon typing gives me the error "Too many characters in character literal" This still shows up with either of the Unicode or UTF8 encodings. If I try to display '\u1F0A' like above... With Unicode it shows '?' With UTF8 it shows 3 characters.

I tried all the given options for OutputEncoding string AceOfSpades = "\U0001F0A0"; Default, Unicode, ASCII: ?? UTF7: +2DzcoA- UTF8: four wierd characters UTF32 , BigEndianUnicode: IOException Console.OutputEncoding = System.Text.Encoding.UTF32;, despite being an option, crashes even if it's the only line of code. UTF16 was not on the list.

How can I check which version of Unicode I'm using?


回答1:


In order to use characters from outside the Basic Multilingual Plane, you need to escape them with \U, not \u. That requires eight hexadecimal digits (which, to be honest, makes little sense, since all Unicode characters can be written with six hexadecimal digits).

However, the type char in .NET can only represent UTF-16 code units, meaning that characters outside the BMP require a pair of chars (a surrogate pair). So you have to make it a string.

string AceOfSpades = "\U0001F0A0";



回答2:


I am going to assume (until you edit your post for clarity) that your symbols are not displaying properly. If this is not the case, I will delete this answer.

Set your console's encoding to Unicode or UTF-8.

Console.OutputEncoding = System.Text.Encoding.Unicode

or

Console.OutputEncoding = System.Text.Encoding.UTF8.

Make sure the font can display Unicode/UTF-8 characters (like Lucida Console).



来源:https://stackoverflow.com/questions/15168565/how-can-i-display-extended-unicode-character-in-a-c-sharp-console

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!