【问题标题】:I want to display Greek unicode characters but i get "?" instead on ouput我想显示希腊 unicode 字符,但我得到“?”而不是输出
【发布时间】:2016-06-11 03:44:34
【问题描述】:

我想在 Java 中从 alpha 开始打印 n 个希腊字符(whitch 有“\u03B1”代码)。这就是我的想法:

String T = "";
  for(int i = 0,aux = 0;i<n;i++)
       {
           aux = '\u03B1' + i;
           T +=Character.toString((char)aux);
       }
  System.out.println(T);

但它会打印 n 个问号。

假设 n=3,在输出中我得到“???”。

我认为也许我的方法是错误的,但如果我尝试这样的事情,那么再次:

System.out.println("\u03B1\u03B2\u03B3");

我得到相同的输出:“???”

为什么我得到这个输出而不是所需的字符,我怎样才能像我想要的那样打印它们?

注意:我使用 IntelliJ 作为 IDE,我的操作系统是 Windows 10。

【问题讨论】:

    标签: java string unicode character


    【解决方案1】:

    我认为这与系统中设置的默认字符集有关。我们可以使用以下行在运行时打印默认字符集:

    System.out.println(Charset.defaultCharset());

    可能是你的系统默认没有设置UTF-8,在这种情况下,我们可以在打印前将字符串转换为UTF-8,例如:

    System.out.println(new String(T.getBytes(),"UTF-8"));

    这会将 alpha、beta 和 gamma 打印到控制台。

    附:不知道是不是笔误,但是T +=Character.toString((char)aux2);需要改成T +=Character.toString((char)aux);

    【讨论】:

      【解决方案2】:

      您得到无效的字符输出,因为您的 IDE 的控制台输出(可能)设置为 Windows 默认字符集编码 CP-1252,但 Java 本身使用 Unicode 编码。

      要解决此问题,您应该将 IDE 控制台输出的字符集编码设置为 UTF-8,例如使用来自this post 的说明。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-10
        • 2018-03-27
        • 1970-01-01
        相关资源
        最近更新 更多