← 返回首页
一个汉字究竟占几个字节
发表时间:2023-05-21 03:05:21
一个汉字究竟占几个字节

一个汉字究竟占几个字节?

1.一个中文字符在计算机中究竟占几个字节?

一个中文字符在计算机中占几个字节,取决于这个中文字符使用什么字符编码。常见的中文字符编码有以下几种:

几种常见中文编码之间存的兼容性,如下图所示:

通过上图所示,我们不难发现所有的中文字符集中,只有ASCII码(纯英文字符)的编码是完全兼容的,中文字符GBK编码与Unicode编码完全不兼容。

2.通过一个例子说明

字符 编码 编码值 一个汉字占用字节数
'中' GBK D6 D0 2
'中' Unicode FF FE 2D 4E 2, 注意:FF FE是unicode文件开头的标识符号
'中' UTF8 E4 B8 AD 2

我们发现同一个汉字,使用不同的字符集,其编码也完全不同。

通常我们软件系统,遵循国际化的思想,一律使用Unicode字符集。

注意:中文windows系统默认使用GBK字符集,这就给我们程序员在windows上开发程序,挖了一个大坑!

3.Unicode与UTF8之间的转换关系

Unicode编码的主要目的是维护一个表,它并没有规定一个字符到底用几个字节来表示。如果每个字符都占用两个字节,那么使用频率最高的英文字符就会造成巨大的存储空间浪费。为了解决空间浪费问题,因为就出现了UTF8字符集,UTF-8 就是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。这样做的好处是让使用频率越高的语言字符占用存储空间越少。

Unicode与UTF8之间的转换关系如下表:

Unicode符号范围      |         UTF-8编码方式
(十六进制)           |              (二进制)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

汉字‘中’ 的 unicode编码 2D 4E ,其中 4E是高位字节,2D是低位字节,因此真正的Unicode编码应该是 4E 2D, 汉字 ‘中’ 的UTF-8编码是:E4 B8 AD。

把汉字'中'的unicode编码 4E 2D ,转换为UTF8编码 E4 B8 AD,的过程如下图所示:

4.小结