Java&编码&Unicode
2016-01-25 本文已影响0人
最好现在开始
编码、解码:定义了字符转换为二进制(1到n个字节)的规则。当需要存储的时候才需要进行编码,当需要在屏幕上显示字符的时候才需要进行解码。这里不考虑从一种编码到另一种编码的编解码过程。
Unicode编码:utf-8(一个字符用1到4个字节表示)、utf-16(一个字符用2个或者4个字节表示)、uft-32(一个字符用4个字节表示)。
.java文件:就是一个普通的文本文件,可以设置成任意编码,只要编译器能够识别
.class文件:编译器用.java生成的二进制文件,.java文件中的字符串(类名、变量名、函数名、字符串常量等)都以utf-8编码存储在.class文件中。
jvm运行时:加载.class文件,使用utf-8编码读取.class文件,并把字符串转化为utf16编码放置在内存中。(所以java支持中文变量、中文方法名等。)
char类型:char类型固定占两个字节,打印char常量的时候使用UCS-2(UCS-2可以看作是utf16中占两个字节的编码的部分)解码
String.getBytes(Charset):jvm字符串在内存中都是utf16存储,当调用getBytes时会转换为指定的编码格式并返回。