在C#中输出Unicode字符

16
我对编程很新,是自学的。我想输出金牛座的星座符号,它应该在Unicode中是U+2649。以下是我的代码...
string myString = "\u2649";
byte[] unicode = System.Text.Encoding.Unicode.GetBytes(myString);
Console.WriteLine(unicode.Length);

我得到的结果是数字2,而不是符号或字体。我确定我做错了什么。

4个回答

20
为什么要将它转换为Unicode?这样做没有任何作用。不进行转换,可以按照以下步骤操作:
string a ="\u2649"  ; 

Console.write(a) ; 

8
您需要具备能够显示该字形的字体。如果有,那么:
Console.WriteLine(myString); 

你所需要的就是它。注:我找到的唯一带有这个字形的字体是“MS Reference Sans Serif”。

默认的控制台字体是否包含所有Unicode字符? - user1228
1
我查看了字符映射中最发达的字体,发现MS Reference Sans Serif有它。其他常见的字体如Arial、Verdana、Tahoma和Calibri都没有。但是MS Reference Sans Serif不是固定大小的字形,所以在控制台中看起来会很奇怪。 - codekaizen
2
Arial Unicode字体可以支持这些字符,但是你可能需要勾选一些额外的框来安装它(或者安装Office?),MS Mincho/PMincho和MS Gothic/PGothic也可以。现在我通常都在控制台上操作,但如果你想要使用这些复杂的字符,最好还是构建一个GUI应用程序。 - Rup
感谢所有回复过的人。Ed - Ed Olson

2
Unicode字符的长度,以字节为单位,是2,您正在将Length写入控制台。
Console.WriteLine(unicode.Length);

如果您想要显示实际字符,则需要:
Console.WriteLine(myString); 

您必须使用具有该Unicode范围的字体才能正确显示。
更新:
使用默认控制台字体,上面的Console.WriteLine(myString)将输出一个?字符,因为没有\u2649。据我所知,没有简单的方法使控制台显示不属于系统代码页或您选择的控制台字体的Unicode字符。
更改控制台使用的字体可能是可能的:更改控制台字体

@Hans:抱歉,我没有这样做。我应该放一个免责声明。我现在会尝试并发布我的答案更新。谢谢Hans。 - Dennis
谢谢Dennis。那很有帮助。虽然我不理解更改控制台字体的所有代码,但这非常有趣。 - Ed Olson
@Ed:为什么一定要控制台输出?使用一个简单的表单和文本框会更容易,因为你可以设置字体。 - Dennis
嗨,Dennis,希望你度过了一个愉快的假期。我正在尝试学习C#,只是在玩耍。我对此非常陌生,但认为编写一个简单的程序来输出星座会很有趣。我在互联网上看到过它们,并想知道它们是如何输出的。我猜他们使用HTML?如果我找到一个具有字形的字符集,我该如何将其包含在我的程序中?我要把文件放在Visual C# 2008 Express的引用文件夹中并使用using语句吗?我真的不想输出jpeg或任何其他格式的文件。谢谢,Dennis,-Ed- - Ed Olson

1
你正在输出字符的长度,以字节为单位。但是,控制台不支持Unicode输出,因此它会显示为一个“?”字符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接