考虑一个简单的例子:
System.out.println("¬");
System.out.println((int)(('¬')));
System.out.println((char)170);
我得到的输出如下(从示例代码开始):
¬
172
ª
为什么会出现这种情况?我查看了字符 170 的 ASCII 图表,它说它确实是¬
. 甚至(在 Windows 上),当一个Alt+170 时,我得到¬
.
有什么我想念的吗?
考虑一个简单的例子:
System.out.println("¬");
System.out.println((int)(('¬')));
System.out.println((char)170);
我得到的输出如下(从示例代码开始):
¬
172
ª
为什么会出现这种情况?我查看了字符 170 的 ASCII 图表,它说它确实是¬
. 甚至(在 Windows 上),当一个Alt+170 时,我得到¬
.
有什么我想念的吗?
不,如果您没有明确指定,Java 是 UTF。看看http://www.utf8-chartable.de/你会发现 unicode U+00AC (==172) 是否定符号,unicode U+00AA (==170) 是阴性序数字符。
干杯,
ASCII(维基百科)只有 128 个字符。
因此,您正在某种“增强的 ASCII”表中查找表,可能是 Latin-1 / ISO-8859-1 字符集,而 Java 使用Unicode,通常是两个字节的 Unicode 变体。
Unicode 字符列表(维基百科)与 Java 所做的一致。
如果您真的想在 system.out 中打印它,请使用 unicode 等效项,如下所示;
System.out.println("\u00AC");
希望这可以帮助。