【问题标题】:Outputting a Unicode character in C#在 C# 中输出 Unicode 字符
【发布时间】:2011-03-10 21:06:39
【问题描述】:

我是编程新手,而且是自学成才的。我正在尝试输出 Taurus 的占星符号,在 Unicode 中应该是 U+2649。这是我正在使用的代码...

string myString = "\u2649";
byte[] unicode = System.Text.Encoding.Unicode.GetBytes(myString);
Console.WriteLine(unicode.Length);

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

【问题讨论】:

    标签: c# unicode c#-3.0 string


    【解决方案1】:

    你为什么要将它转换为 unicode,这不会做任何事情.. 丢失转换并执行以下操作:

    string a ="\u2649"  ; 
    
    Console.write(a) ; 
    

    【讨论】:

      【解决方案2】:

      您需要有一种显示该字形的字体。如果你这样做了,那么:

      Console.WriteLine(myString); 
      

      就是你所需要的。

      编辑:请注意,我能找到的唯一具有此字形的字体是“MS Reference Sans Serif”。​​

      【讨论】:

      • 默认控制台字体是否包含所有 unicode 字符?
      • 没有。我查看了 Character Map 中最发达的字体,发现 MS Reference Sans Serif 有它。其他常见的嫌疑人——Arial、Verdana、Tahoma、Calibri——都没有。不过,MS Reference Sans Serif 不是固定大小的字形,因此在控制台中看起来会很奇怪。
      • Arial Unicode 确实如此,尽管您可能需要勾选一些额外的框才能安装它(或安装 Office?),MS Mincho/PMincho 和 MS Gothic/PGothic 也是如此。现在我通常在控制台上做所有事情,但如果你想要像这样的复杂字符,你可能应该构建一个 GUI 应用程序。
      • 感谢所有回复的人。埃德
      【解决方案3】:

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

      Console.WriteLine(unicode.Length);
      

      如果你想显示实际的字符,那么你需要:

      Console.WriteLine(myString); 
      

      您必须使用具有该 Unicode 范围的字体才能正确显示。

      更新:

      使用默认控制台字体,上面的Console.WriteLine(myString) 将输出一个? 字符,因为没有\u2649。到目前为止,我已经搜索过,没有简单的方法可以让控制台显示 Unicode 字符,这些字符还不是系统代码页的一部分或您为控制台选择的字体。

      可以更改控制台使用的字体:Changing Console Fonts

      【讨论】:

      • @Hans:对不起,我没有。我应该放一个免责声明。我现在将尝试并发布我的答案的更新。谢谢汉斯。
      • 谢谢丹尼斯。这很有帮助。虽然我不了解更改控制台字体的所有编码,但这很有趣。
      • @Ed:为什么必须要有控制台输出?使用文本框创建一个简单的表单会更容易,因为您可以设置字体。
      • 嗨丹尼斯,希望你有一个愉快的假期。我只是在尝试学习 C#。我对此真的很陌生,并认为编写一个简单的程序来输出占星术符号会很有趣。我在互联网上看到过它们,想知道它们是如何输出的。我猜他们正在使用HTML?如果我确实找到了具有字形的字符集,我该如何将它包含在我的程序中?我是否将文件放在 Visual C# 2008 Express 的参考文件夹中并使用 using 语句?我真的不想输出 jpeg 或类似的东西。谢谢丹尼斯,-Ed-
      【解决方案4】:

      您正在输出字符的长度,以字节为单位。但是,控制台不支持 unicode 输出,因此它会以“?”的形式出现。字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-14
        • 2013-07-12
        • 2013-08-31
        • 1970-01-01
        • 2020-01-06
        • 2023-03-17
        • 2012-09-27
        相关资源
        最近更新 更多