理解字符集字符编码

1、什么是字符集:
字符集(Character Set)只是一个规则集合的名字,比如你在纸上画出的“1”,“2”,“&”,“$”等等这些符号,你向别人说明你画的这些符号是ASCII字符集。

常常念叨的两个字符集就是 ASCII字符集Unicode字符集
当然还有我们的GB2312是中文字符集,它本身包含ASCII字符集,即对ASCII的扩展。

2. 什么是字符集编码
字符集编码(Character Encoding),在计算机大脑里面的文字只有 “1”和“0”,上面你画出的“1”,“2”,“&”,“$”等等这些符号计算机是不认识的,所以你必须对每一个符号进行唯一编码(二进制编码),保证电脑认出的1和0组合对应上具体的符号。
字符集和字符编码是一个双射的关系。在一套字符编码和字符集中,一个字符对应着唯一的一个编码,并且一个编码只对应一个唯一的字符。
常见的字符集编码有 ISO-8859-1 、 GBK 、 UTF-8

  1. ISO-8859-1: 是对ASCII字符集的一种编码实现,当然ASCII字符集本身有编码方案称为“ASCII编码”。占1个字节

  2. GBK :是对GB2312字符集的一种编码实现。变长存储,1个ASCII码占1个字节,而1个汉字编码占2个字节

  3. UTF-8 : 是对Unicode字符集的一种编码实现,当然Unicode字符集本身有套编码方案称为“Unicode编码”,
    它采用定长存储,统一采用2个字节进行存储。即便是ASCII码也用2个字节存储,这样造成极大的空浪费,UTF-8就是对其进行了存储的优化。变长存储,一般1个ASCII码占1个字节,而1个汉字编码占3个字节

3. java 中的字符存储
由于 Java 是跨平台语言,不同平台之间编码之间的切换较多。,理解在Java中字符只以unicode的形式存在。
在JVM中、在内存中、在代码里声明的每一个char、String类型的变量中字符以unicode格式存在。

推荐博客
在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组
http://blog.csdn.net/chaozi2009/article/details/50930166

从内存角度解析Java字符编码
http://blog.csdn.net/u013905744/article/details/51923671

猜你喜欢

转载自blog.csdn.net/gzt19881123/article/details/78045355