从 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";
我得到了不同的结果 运行 我的 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";