Python入门很轻松(微课超值版)
上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的程序运行结果