中文字节占比的原因揭秘

文章标题:

中文字节占比的缘由剖析

文章内容:缘由

在学习Java基础期间,曾经有过这样的想法:认为对于s2来说,一个中文占据3个字节,21845个中文刚好占用65535个字节,并且字符串长度也没有超过限制,所以能够编译通过。但后来发现这个说法是错误的,实际上Java中char的存储方式是LATIN - 1(1字节)或者UTF - 16(2字节),不过这却引发了我对UTF - 8的思考,疑惑为什么中文字符是占3个字节,而不是2个字节呢。

  • Java的默认编码格式

那我们来看看UTF - 8的相关维基内容。

  • Unicode

其含义就是为每一个字符(任何语言的字符)提供一个唯一的编码,以此来满足跨语言、跨平台的文本信息转换需求。

码点的位数 表示的Unicode范围 字节序列 Byte 1 Byte 2 Byte 3 Byte4
7 0~127 1 0xxxxxxx
11 128~2047 2 110xxxxx 10xxxxxx
16 2048~65535 3 1110xxxx 10xxxxxx 10xxxxxx
21 >65535 4 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

比如“中”字的Unicode为4E2D,由于4^(16×16×16) = 16384 > 2047,所以显然是用3位的UTF - 8来存储的。

版权声明:程序员胖胖胖虎阿 发表于 2025年6月22日 下午4:31。
转载请注明:

中文字节占比的原因揭秘

| 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...