【发布时间】:2015-03-26 23:58:43
【问题描述】:
假设我有一个String。如果我这样做:
for (int index = 0; index < ch.length(); index++) {
char c = ch.charAt(index);
System.out.println(String.format("%04x", (int) c));
}
输出会是什么?
我尝试了a,得到了0061,这似乎是A 的UTF-8/ASCII 值。
然后我尝试了???? 并得到了d800 dd51,这似乎不是UTF 值。
只是想知道,Java 中 Char 的 int 值是多少。
【问题讨论】:
-
换句话说,Java
Char是单个 UTF-16 代码单元(不是字符),String是 UTF-16 代码单元序列。在 UTF-16 中,Unicode 代码点U+0000到U+FFFF使用 1 个代码单元,而代码点U+10000到U+10FFFF使用 2 个代码单元,称为代理对。