我在 char 'a'
上尝试了位移运算符 (<<1) 并根据编译器得到了输出 'Â'
但如果我看到 的二进制文件code>'a' 1100001 = 97
移位后为11000010 = 194
,'Â'的ASCII码为182
,ASCII码194属于a框绘图字符。我不明白为什么编译器会为 ASCII 码 194 显示“”?
ASCII 码引用链接:Box drawing character single line horizontal down
最佳答案
ASCII 是一个标准,只有 128 个代码。
Extended ASCII不是单一标准,而是使用一个字节中剩余的 128 个可用代码。正如维基百科所说:
There are many extended ASCII encodings (more than 220 DOS and Windows codepages).
由此我们可以得出结论,Extended ASCII 有 220 种不同的标准。您只看其中之一,而不是与 Java 有任何关系的那个。
事实上,您引用的链接使用的是 code page 850 ,其中字符 194(十六进制 C2)为 ┬
, 为 182(十六进制 B6)。
Java 使用 Unicode ,其中 char
值实际上是 UTF-16编码的 Unicode 字符。截至 Unicode 10.0(2017 年 6 月),目前有 136,755 代码。
前 128 个代码 ( Basic Latin ) 与 ASCII 相同。接下来的 128 个代码 ( Latin-1 Supplement ) 与扩展 ASCII 代码页相同 ISO 8859-1 .
在 Unicode 中,字符 194(十六进制 C2)是 ,也称为 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX' (U+00C2) .
关于java - 为什么 (char)194 == 'Â' 而不是 (char)182 == 'Â',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44771711/