字符串编码转换
在Python 3X中,默认来用的编码格式为UTF-8,采用这种编码有效地解决了中文乱码的问题。在Python 3.X中,默认来用的编码格式为UTF-8,采用这种编码有效地解决了中文乱码的问题。在Python 中,有两种常用的字符串类型,分别为 str 和 bytes。其中,str 表示 Unicode 字符 (ASCII或者其他); bytes 表示二进制数据(包括编码的文本)。这两种类型的字符串不能拼接在一起使用。通常情況下,str 在内存中以 Unicode 表示,一个字符对应若干个字节。但是如果在网络上传输,或者保存到磁盘上,就需要把 str 转换为字节类型,即 bytes 类型。
bytes 类型的数据是带有b前缀的字符串(用单引号或双引号表示),例如,b'xd2\xb0'和b'mr'都是 bytes 类型的数据。
str 类型和 bytes 类型之间可以通过encode() 和 decode() 方法进行转换,这两个方法是互逆的过程。
1. 使用 encode() 方法编码
encode() 方法为str对象的方法,用于将字符串转换为二进制数据(即bytes),也称为“编码”,其语法格式如下:
str.encode([encoding="utf-8"][,errors="strict"])
参数说明
str:表示要进行转换的字符串
encoding="utf-8":可选参数,用于指定进行转码时采用的字符编码,默认为UTF-8,如果想使用简体中文,也可以设置为gb2312。当只有这一个参数时,也可以省略前的“encoding=”,直接写编码。
errors="strict":可选参数,用于指定错误处理方式,其可选择值可以是strict(遇到非法字符就抛出异常)、ignore(忽略非法字符)、replace(用“?”替换非法字符)或xmlcharrefreplace(使用 XML 的字符引用)等,默认值为 strict。
在使用 encode() 方法时,不会修改原字符串,如果需要修改原字符串,需要对其进行重新赋值。
例如,定义一个字符串,然后使用 encode() 方法将其采用 GBK 编码转换为二进制数,并输出原字符串和转换后的内容,代码如下:
str = "我爱学习" byte = str.encode('GBK') #采用GBK编码转换为二进制数据 byte2 = str.encode() #采用UTF-8编码转换为二进制数据 print("原字符串:",str) #输出 我爱学习 print("新字符串1:",byte) # 输出 新字符串1:b'\xce\xd2\xb0\xae\xd1\xa7\xcf\xb0' print("新字符串2:",byte2) # 输出 新字符串2:b'\xe6\x88\x91\xe7\x88\xb1\xe5\xad\xa6\xe4\xb9\xa0'
2. 使用 decode() 方法解码
decode() 方法为 bytes 对象的方法用于将二进制数据转换为字符串,即将使用 encode() 方法转换的结果再转换为字符串,也称为“解码”。语法格式如下:
bytes.decode([encoding="utf-8"][,errors="strict"])
参数说明:
本文未完全显示,开通会员查看全文......