您的位置:首页 > 编程语言 > Java开发

java中的char中unicode和utf的关系

2015-05-20 07:51 190 查看
char是Java的基础类型(原类型 ),是字符类型。在Java中字符是基于Unicode编码的,所以一个Java的字符占2个字节,字符的内容存的是unicode的码值(二进制数字)。问题来了,程序是怎么把unicode的码值转换为我们要的程序数据?例如:汉字的'汉'对应的unicode码值为:0x6C49。我们想要的程序数据为'汉',而计算机存储的为码值。如何把码值‘0x6c49’显示为‘字’,需要一个转换过程。 这个转换过程需要一个转换规则。转换规则的书面写法为UTF(UCS Transformation Format) ,现在有的转换规则有utf-8,utf-16,utf-32。

现在我们通常用的转换规则为utf-8,其转换规则如下;

Unicode编码(十六进制) UTF-8 字节流(二进制)
000000 - 00007F 0xxxxxxx
000080 - 0007FF 110xxxxx 10xxxxxx
000800 - 00FFFF 1110xxxx 10xxxxxx 10xxxxxx
010000 - 10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

“汉”字的Unicode编码是0x6C49。0x6C49在0x0800-0xFFFF之间,使用用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将0x6C49写成二进制是:0110 1100 0100 1001, 用这个比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。

java的虚拟机默认的转换规则为utf-8;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: