上QQ阅读APP看书,第一时间看更新
5.2 字符串的编码转换
微视频
在Python 3.x中,默认采用的编码格式为UTF-8。采用这种编码有效地解决了中文乱码的问题。UTF-8是国际通用编码,采用1字节表示英文字符,3字节表示中文。
在Python中,有两种常用的字符串类型,分别为str和bytes。其中,str表示Unicode字符;bytes表示二进制数据。这两种类型的字符串不能拼接在一起使用。str在内存中以Unicode表示,一个字符对应若干字节。如果在网络上传输或者保存在磁盘上,就需要把str转换成bytes类型,既字节类型。
☆大牛提醒☆
bytes类型的数据是带有b前缀的字符串。例如,b'\xe4\xba\xba\xe7\x94\x9f\xe8就是bytes类型的数据。
str类型和bytes类型之间可以通过encode()和decode()方法进行转换,这两个方法是互逆的过程。
encode()方法以指定的编码格式编码字符串。语法格式如下:
str.encode(encoding='UTF-8',errors='strict')
参数encoding为要使用的编码方式,默认值为UTF-8;参数errors可以指定不同的错误处理方案。该方法返回编码后的字符串。
☆大牛提醒☆
encode()方法只是修改了字符串的编码方式,并不会修改字符串的内容。
decode()方法以指定的编码格式解码bytes对象。语法格式如下:
bytes.decode(encoding="utf-8", errors="strict")
参数encoding为要使用的编码方式,默认值为UTF-8;参数errors可以指定不同的错误处理方案。该方法返回解码后的字符串。
【例5.4】字符串的编码和解码(源代码\ch05\5.4.py)。
str = "人生苦短我学Python"; str_utf8 = str.encode("UTF-8") str_gb2312 = str.encode("GB2312") print(str) print("UTF-8 编码:", str_utf8) print("GB2312编码:", str_gb2312) print("UTF-8 解码:", str_utf8.decode('UTF-8','strict')) print("GB2312 解码:", str_gb2312.decode('GB2312','strict'))
程序运行结果如图5-4所示。
图5-4 例5.4的程序运行结果