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

时间:2019-01-02 17:11:26

标签: java unicode character-encoding aix

从AIX运行Java代码会得到不同的结果。

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版本提供预期的结果。

1 个答案:

答案 0 :(得分:0)

它不是特定于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";