Java中的ASCII字符集问题

时间:2012-11-29 12:10:47

标签: java ascii

考虑一个简单的例子:

System.out.println("¬");
System.out.println((int)(('¬')));
System.out.println((char)170);

我得到的输出如下(按照示例代码的顺序):

¬
172
ª

为什么会这样?我调查了ASCII chart for character 170,并说它确实是¬。甚至(在Windows上),当一个 Alt +170时,我得到¬

有什么东西我不见了吗?

4 个答案:

答案 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");

希望这有帮助。