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;
现在我们通常用的转换规则为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;
相关文章推荐
- Ascii,Unicode和utf-8的发展演变,java下字符和字节关系
- java基础之unicode和utf-8和assci之间的关系
- 【java】 Unicode和UTF的关系
- java中 Unicode和UTF-8的关系
- java基础类型中的char和byte的辨析及Unicode编码和UTF-8的区别
- java中char和Unicode之间的关系
- Java中char是unicode 占几个字节呢?
- Java中的ASCII、Unicode和UTF-8字符编码集
- UTF-8 GBK UTF8 GB2312 Unicode 之间的区别和关系
- java 字符集与编码 unicode、utf-8、utf-16
- Unicode和UTF-8的关系
- Unicode和UTF-8的关系
- JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础[引]
- erl0008 - unicode 和 utf-8之间的关系
- 常见的几种字符编码方式及Unicode与UTF-8之间的关系
- Unicode和UTF-8之间的关系
- java保存到数据库中文乱码,加useUnicode=true&characterEncoding=UTF-8
- ASCII,Unicode和UTF-8之间的关系
- java unicode to utf-8
- unicode和utf-8,gbk之间的转换与关系