字符集和字符编码定义
字符集: 定义了字符和二进制的对应关系,为每个字符分配了唯一的编号。可以将字符集理解成一个很大的表格,它列出了所有字符和二进制的对应关系,计算机显示文字或者存储文字,就是一个查表的过程。
字符编码: 规定了如何将字符的编号存储到计算机中。如果使用了类似 GB2312 和 GBK 的变长存储方案(不同的字符占用的字节数不一样),那么为了区分一个字符到底使用了几个字节,就不能将字符的编号直接存储到计算机中,字符编号在存储之前必须要经过转换,在读取时还要再逆向转换一次,这套转换方案就叫做字符编码。
python中涉及到字符与字符集转换的方法
内置方法ord和chr函数
字符在unicode字符集中的ID与字符之间的转换
ch1 = '中'
ch2 = '国'
print(f'“{ch1}”的unicode编号:{ord(ch1)}')
print(f'“{ch2}”的unicode编号:{ord(ch2)}')
ch1_unicode = 20013
ch2_unicode = 22269
print(f'在unicode字符集中编号为{ch1_unicode}对应的字符:{chr(ch1_unicode)}')
print(f'在unicode字符集中编号为{ch2_unicode}对应的字符:{chr(ch2_unicode)}')

字符串encode和decode方法
字符的字节码与字符之间的转换
str_ = "中国"
print(f'测试字符串为: {str_}')
str_utf8 = str_.encode("UTF-8")
str_gbk = str_.encode("GBK")
print("UTF-8 编码:", str_utf8)
print("GBK 编码:", str_gbk)
print("UTF-8 解码:", str_utf8.decode('UTF-8','strict'))
print("GBK 解码:", str_gbk.decode('GBK','strict'))

字符字节码与二进制之间的关系
str_ = '中'
str_utf8 = bytes(str_, encoding='utf-8')
print(f'"{str_}"的字节码为: {str_utf8}')
print('对应的十进制:', int('e4b8ad', base=16))

‘中国’的字节码 为b’\xe4\xb8\xad\xe5\x9b\xbd’,在内存中的存储二进制为 e4b8ade59bbd(16进制转为二进制)
字符‘中’字的unicode值为20013,不等于14989485,可以证明:一个字符在字符集中的编码与其字节码是不一样的
https://www.cnblogs.com/H1916K/articles/6748997.html
本文详细解释了字符集和字符编码的概念,通过Python内置方法ord和chr演示字符与Unicode编号的转换,并展示了字符串encode和decode方法如何实现字符的字节码与字符之间的转换。
674

被折叠的 条评论
为什么被折叠?



