从 AIX java 代码读取特殊字符得到不同的结果

Getting different result from AIX java code reading special chars

我得到了不同的结果 运行 我的 java 来自 AIX 的代码。

public class TestChars {

    public static void main(String[] args) {
        String s = "…";
        for(char c: s.toCharArray())
            System.out.println(" Character Name : " + Character.getName(c) + " Simbol : '"+c+"' Code : " + Integer.toHexString((int)c));
    }
}

AIX:

Character Name : LATIN SMALL LETTER A WITH CIRCUMFLEX Simbol : '?' Code : e2
Character Name : LATIN 1 SUPPLEMENT 80 Simbol : '?' Code : 80
Character Name : BROKEN BAR Simbol : '?' Code : a6

但这是预期的结果:

Character Name : HORIZONTAL ELLIPSIS Simbol : '…' Code : 2026

我仍然不清楚问题出在哪里,或者需要什么才能使来自 aix 的 ibm java 版本给出预期的结果。

它不是特定于 AIX 的:编译器假设输入是 ISO-8859-x,但它实际上是 UTF-8

可能的解决方案:

#1: LC_CTYPE=en_US.UTF-8 javac TestChars.java
#2: javac -encoding UTF-8 TestChars.java

您也可以在源代码中使用 \u 序列:

String s = "\u2026";