java中的char中unicode和utf的关系

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;

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。