从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版本提供预期的结果。
答案 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";