unicode\utf-8以及二进制、hex、base64是怎么一回事儿?

首先,Unicode 是一个字符集,它为全世界的所有字符(包括字母、符号、汉字、表情符号等)分配了一个 唯一的编号(代码点)。这些编号并不关心字符如何存储(即字节数),只关心每个字符对应的编号。


因为 Unicode 给每个字符分配了一个编号,但是它并没有规定 如何用字节存储这些字符的编号。不同的字符编号需要不同的字节数来存储。于是我们需要一种 转换规则,将这些编号转换成计算机能够处理的字节格式。这时,我们就需要使用 编码规则,如utf-8|utf-16|utf-32

  • utf-8存储规则:对于 ASCII(U+0000 ~ U+007F)的字符,只用 1 字节(等价于原始 ASCII);
    对于其他字符(如中文),会用 2~4 个字节。

而对于计算机中的十进制、十六进制(HEX),Base64字符,其底层其实都是二进制
-二进制用于存储
-十六进制方便人类阅读
-Base64用于文本传输/安全
-ASCII/UTF-8

比如字符 '中' 的 Unicode 编码是 U+4E2D,在 UTF-8 编码下,它被编码成 3 个字节:0xE4, 0xB8, 0xAD(十六进制),11100100 10111000 10101101(二进制)


实际上在python中,除了二进制数据,其余几乎都是str类型,上述的各种定义只不过是解释信息的方式规则

posted @ 2025-04-14 17:33  leleleocc  阅读(0)  评论(0)    收藏  举报