考虑一个简单的例子:
System.out.println("¬");
System.out.println((int)(('¬')));
System.out.println((char)170);
我得到的输出如下(按照示例代码的顺序):
¬
172
ª
为什么会这样?我调查了ASCII chart for character 170,并说它确实是¬
。甚至(在Windows上),当一个 Alt +170时,我得到¬
。
有什么东西我不见了吗?
答案 0 :(得分:2)
Java(内部)默认字符集是UTF-16(Unicode)。
170十进制是AA十六进制,所以你的角色是女性常规指标,见here。
documentation of Primitive Data Types州:
char:char数据类型是一个16位Unicode字符。它的最小值为'\ u0000'(或0),最大值为'\ uffff'(或65,535(含))。
答案 1 :(得分:0)
没有。如果您没有明确指定,Java是UTF。看看http://www.utf8-chartable.de/,你会看到unicode U + 00AC(== 172)是否定符号,unicode U + 00AA(== 170)是女性序数字符。
干杯,
答案 2 :(得分:0)
ASCII (Wikipedia)只有128个字符。
所以你在某种“增强型ASCII”表中查找表,可能是Latin-1 / ISO-8859-1字符集,而Java使用 Unicode ,通常是两字节Unicode变体。
List of Unicode characters (Wikipedia)同意Java正在做的事情。
答案 3 :(得分:0)
如果你真的想在system.out中打印它,那么使用等效的unicode,如下所示;
System.out.println("\u00AC");
希望这有帮助。