Python encode()和decode()方法:字符串编码转换

如题所述

在前面章节中,我们简要介绍了encode()和decode()方法的用法,本节将对此进行深入探讨。

最早的字符串编码是ASCII编码,它仅对数字、英文字母和特殊字符进行了编码,每个字符占用1个字节。随着信息技术的发展,各国文字都需要编码,因此出现了GBK、GB2312、UTF-8等编码格式。GBK和GB2312是我国制定的中文编码标准,规定英文字符占用1个字节,中文字符占用2个字节;而UTF-8是国际通用的编码格式,包含全世界所有国家需要的字符,英文字符占用1个字节,中文字符占用3个字节。Python 3.x默认采用UTF-8编码格式,有效解决了中文乱码问题。

Python中有两种常用的字符串类型:str和bytes。str用于表示Unicode字符,bytes用于表示二进制数据。str和bytes之间需要使用encode()和decode()方法进行转换。

encode()方法

encode()方法用于将str类型转换成bytes类型,即编码过程。

encode()方法的语法格式如下:

注意,[]中的参数为可选参数。

该方法各个参数的含义如表1所示。

表1 encode()参数及含义

当方法中只使用这一个参数时,可以省略“encoding=”直接写编码格式,例如str.encode("UTF-8")。

errors="strict"指定错误处理方式,可选择值为:

strict:遇到非法字符抛出异常。

ignore:忽略非法字符。

replace:用“?”替换非法字符。

xmlcharrefreplace:使用xml的字符引用。

默认值为strict。

注意,使用encode()方法对原字符串进行编码不会直接修改原字符串,若要修改原字符串,需要重新赋值。

【例1】将str类型字符串“C语言中文网”转换成bytes类型。

此方式默认采用UTF-8编码,也可以手动指定其它编码格式,例如:

decode()方法

decode()方法与encode()方法相反,用于将bytes类型的二进制数据转换为str类型,即解码过程。

decode()方法的语法格式如下:

该方法中各参数的含义如表2所示。

表2 decode()参数及含义

注意,对bytes类型数据进行解码时,要选择和当初编码时一样的格式。

errors="strict"指定错误处理方式,可选择值为:

strict:遇到非法字符抛出异常。

ignore:忽略非法字符。

replace:用“?”替换非法字符。

xmlcharrefreplace:使用xml的字符引用。

默认值为strict。

【例2】

注意,如果编码时采用的不是默认的UTF-8编码,则解码时要选择和编码时一样的格式,否则会抛出异常,例如:
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜