【发布时间】:2012-08-24 15:16:37
【问题描述】:
public class UTF8 {
public static void main(String[] args){
String s = "ヨ"; //0xFF6E
System.out.println(s.getBytes().length);//length of the string
System.out.println(s.charAt(0));//first character in the string
}
}
输出:
3
ヨ
请帮助我理解这一点。试图了解 utf8 编码在 java 中是如何工作的。 根据 char 的 java doc 定义 char:char 数据类型是单个 16 位 Unicode 字符。
是不是说java中的char类型只能支持那些可以用2个字节表示的unicode字符,不超过那个?
在上面的程序中,为该字符串分配的字节数为 3,但在返回第一个字符(java 中为 2 个字节)的第三行中可以容纳一个 3 个字节长的字符? 真的很困惑吗?
任何关于 java/general 中这个概念的好的参考都将非常感激。
【问题讨论】:
-
另见Unicode FAQ。