【高级Android】Java的Char只有两个字节,在采用utf-8编码时,为什么可以存储汉字(3字节)?

1. Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。通常Unicode占用两字节,也就说Unicode用两字节就能表示世界上全部语言。

2. UTF-8(8位元,Universal Character Set/Unicode Transformation Format)是针对Unicode的一种可变长度字符编码。重点是“可变”UTF-8根据存储的字符类型不一样,他所占的字节是不一样的,例如,英文时,只占用1个字节,中文时则膨胀为3个字节。

3. 举个例子,在一个含有如下代码的Java文件(该文件为UTF-8编码)里有这么一行代码

char a = '猿';

编译后生成的class文件会把’猿’转化成Unicode的两字节。

4. 也就说Java内部或者说Jvm内部对字符的编码计算基于Unicode双字节,而外部显示存储则是用UTF-8,通过这种方式从而实现两字节的Char存储UTF-8编码的字符

    原文作者:greenredshark
    原文地址: https://blog.csdn.net/greenredshark/article/details/103278091
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞