专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 常用的Java编码格式

常用的Java编码格式

更新时间:2022-07-22 09:25:12 来源:赢咖4 浏览910次

常用的Java编码格式是什么?赢咖4小编来告诉大家。首先我们来了解一下unicode和utf-8有什么区别:

unicode(统一码)为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求,是国际码。是字符集,也就是一个符号对应一个编号(相当于一个字典),相比较于ASCLL,采用的是一个字节,存放内容有限,但是我们中文数量太多了,无法用一个字节存放,所以采用unicode编码,两个字节来存。

但是Unicode只是字典,还不是真实计算机内部的存储数据!

I 00000000 01001001 
t 00000000 01110100 
' 00000000 00100111 
s 00000000 01110011 
  00000000 00100000 
动 01110111 11100101 
力 01001110 01001110 
节 01100101 11100101 
点 01100010 10100101

而utf-8不同,它是编码规则,而不是一个单纯的映射,

I 01001001 
t 01110100 
' 00100111 
s 01110011
  00100000 
动 11100111 10011111 10100101 
力 11100100 10111001 10001110 
节 11100110 10010111 10100101 
点 11100110 10001010 10100101

用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。

所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间:

由于字母的只占用七位,所以存在很大的空间浪费,utf-8就将这个进行了缩小,而对于其她符号,可能占用1-4个字节,比如这里的汉字占用3个字节,第一个字节前面有多少个1,就表示占了多少个字节,然后使用一个0分离,后面的两个字节使用10进行标识。

总体上,还是缩小了存储空间。

utf是给unicode编码在网络传输中使用的,为了让计算机知道,这是一个字符,还是三个字符,用来区分字符的。utf-8就是一次传输8位。

注意unicode是固定的,所以解读不需要复杂的分隔符,但是utf-8为了减少存储量,把符号的字节长度搞得不统一了,才进行的符号分隔符标识的。注意这个逻辑:utf-8的出现是解决unicode在存放英文浪费空间的问题,所以utf-8可以理解为unicode的一种存放方式,而他们的码表还是对应的。

最后我们这样理解:unicode是在jvm中使用,内存中使用,而utf-8是在文件中存放磁盘使用,传输使用。

java默认使用的是utf-16作为内存的字符存储格式。

在cpu读取内存中的数据的时候,读取的unicode就可以直接安装这个码表中的数字直接运算,如果读取的utf-8,则必须切换成码表中的数据才能运算,而持久化到磁盘的时候,如果步进行编码分割,那么就无法区分字符的范围,导致无法短句解读。

注意:在java中,内存里面使用String,里面是char组,一个char占两个字节,所以它的真实长度就是2倍,而我们平时说的字节长度,是要基于编码方式,不同的编码方式长度不同。

“asd嗷嗷”判断一个字符串的字节长度,不能脱离编码方式来判断,就如同数字42的字节,就根据存储的类型来判断,如short,long int,double,不同的方式大小不一样,字符串也是gb2312,utf-8,utf-16,不同的方式,大小也是不相同的,java默认是使用utf-16的。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>