如何理解字符集和字符编码

来源:互联网 发布:程序员做投资 编辑:程序博客网 时间:2024/06/05 21:06

  • 概念

简单来说,unicode,gb码和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是不兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与gbk就是不一样的,假设unicode为a040,gbk为b030,而uft-8码,就是把那个值表现的形式.utf-8码完全只针对uncode来组织的,如果GBK要转UTF-8必须先转unicode码,再转utf-8就OK了。

  • GBK到Utf-8的转换过程

GBK等都属于GB码值的表现形式
Utf-8等都属于Unicode码值的表现形式
所以如果GBK要转变成utf-8,则首先先将GBK对应的GB码值转换成Unicode码值(这可以通过相关算法和查表来完成),然后将Unicode码值用utf-8编码方式将其编码(最终在内存中的表现方式)。

  • Java一切基于unicode编码

Java源代码,我们可以指定各种各样的编码格式,这些编码格式,最终表现的只是这个文件中对字符的编码,可以直接通过十六进制查看文件头来查看到是何种编码。当对源码进行编译的时候,编译成.class文件,这个时候这个文件就是采用Unicode编码集,当调用String中的getBytes()方法时,就是对特定字符串(这个字符串是Unicode编码集的字符组成的集合)进行编码,new String()则可以按照某个字符集将字节流转换回unicode编码集的字符集合。














原创粉丝点击