python字符集与字符编码

本文详细解释了字符集和字符编码的概念,通过Python内置方法ord和chr演示字符与Unicode编号的转换,并展示了字符串encode和decode方法如何实现字符的字节码与字符之间的转换。

字符集和字符编码定义

字符集: 定义了字符和二进制的对应关系,为每个字符分配了唯一的编号。可以将字符集理解成一个很大的表格,它列出了所有字符和二进制的对应关系,计算机显示文字或者存储文字,就是一个查表的过程。


字符编码: 规定了如何将字符的编号存储到计算机中。如果使用了类似 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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值