Java&编码&Unicode

编码、解码:定义了字符转换为二进制(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时会转换为指定的编码格式并返回。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容