Python3学习笔记(字符串编码转换)

在Python中,有两种常用的字符串类型,分别为str和bytes。其中,str表示Unicode字符(ASCII或者其他);bytes表示二进制数据(包括编码的文本)。

说明:bytes类型的数据是带有b前缀的字符串(用单引号或双引号表示)
str类型和bytes类型之间可以通过encode()和decode()方法进行转换,这两个方法是互逆的过程。

使用encode()方法编码

encode()方法为str对象的方法,用于将字符串转换为二进制数据(即bytes),也称为“编码”,其 语法格式如下:

str.encode([encoding=" utf-8"][,errors="strict"])

参数说明:

  • str:表示要进行转换的字符串。
  • encoding- “uf-8”:可选参数,用于指定进行转码时采用的字符编码,默认为UTF-8, 如果想使用 简体中文,也可以设置为gb2312。当只有这一一个参数时, 也可以省略前面的“encoding=", 直接写编码。
  • rrors"strict": 可选参数,用于指定错误处理方式,其可选择值可以是strict (遇到非法字符 就抛出异常)、ignore (忽略非法字符)、replace (用“?”替换非法字符)或xmlcharrefreplace (使用
    XML的字符引用)等,默认值为strict。

说明:在使用encode0)方法时, 不会修改原字符串,如果需要修改原字符串,需要对其进行重新赋值。

例如,定义一个名称为verse的字符串,内容为“野渡无人舟自横”,然后使用endoce()方法将其 采用GBK编码转换为二进制数,并输出原字符串和转换后的内容,代码如下:

verse = "野渡无人舟自横"
byte = verse.encode('GBK')
print(byte)

执行结果:

b'\xd2\xb0\xb6\xc9\xce\xde\xc8\xcb\xd6\xdb\xd7\xd4\xba\xe1'
使用decode()方法解码

decode()方法为bytes对象的方法用于将二进制数据转换为字符串,即将使用encode()方法转换的结果再转换为字符串,也称为“解码”。语法格式如下:

bytes .decode([encoding= utf-8"][, errors="strict"])

参数说明:

  • bytes::表示要进行转换的二进制数据,通常是encode()方法转换的结果。
  • encoding=“utf-8”:可选参数,用于指定进行解码时采用的字符编码,默认为UTF-8,如果想使用简体中文,也可以设置为gb2312。当只有这一 个参数时,也可以省略前面的“encoding=",直接写编码。
    注意:在设置解码采用的字符编码时,需要与编码时采用的字符编码一致。
  • rrors-“strict”:可选参数,用于指定错误处理方式,其可选择值可以是strict (遇到非法字符 就抛出异常)、ignore (忽略非法字符)、replace (用“?”替换非法字符)或xmtcarrefreplace (使用 XML的字符引用)等,默认值为strict。

说明:在使用 decode()方法时, 不会修改原字符串,如果需要修改原字符串, 需要对其进行重新赋值。

例如,将上面的示例编码后会得到二进制数据 (保存在变量byte中),要进行解码可以使用 下面的代码:

print(byte.decode('GBK'))

执行结果:

野渡无人舟自横
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值