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类型,上述的各种定义只不过是解释信息的方式规则

浙公网安备 33010602011771号