【问题标题】:Getting different result from AIX java code reading special chars从读取特殊字符的 AIX java 代码中获得不同的结果
【发布时间】:2019-05-29 08:14:48
【问题描述】:

我从 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 版本给出预期的结果。

【问题讨论】:

    标签: java unicode character-encoding aix


    【解决方案1】:

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

    【讨论】:

    • 太棒了。有用!我刚刚使用编码参数编译。非常感谢 Lorinczy。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 2013-10-20
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多