字符串编码和解码

Python学习之字符串编码和解码

字符串编码和解码

编码

字符串编码用 encode 将字符串编码成字节码(以b开头),Python中默认的编码是 utf-8 ,要编程什么码,就填入对应的编码规则即可
例:

string='this is a test,这是一个测试'
print(string.encode())				# 等价于 print(string.encode('utf-8')) 以utf-8 为规则编码
print(string.encode('gbk'))			# 以gbk方式编码
# print(string.encode('ascii'))		# 以ASCII码方式编码,由于ASCII不支持中文,所以该语句会报错

运行结果:

b'this is a test,\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\x80\xe4\xb8\xaa\xe6\xb5\x8b\xe8\xaf\x95'
b'this is a test,\xd5\xe2\xca\xc7\xd2\xbb\xb8\xf6\xb2\xe2\xca\xd4'

注意:

  1. Python中的utf-8编码,一个英文占一个字节,一个中文占三个字节
  2. ASCII码不支持对中文的编码,如果编码的字符串中有中文,会报错

解码

字符串的解码用 decode ,将以b开头的字节串,解码成对应的字符串,解码的方式要与编码的方式一致,否则会有异常
例1:

# 以utf-8方式编码
bytes_str = b'this is a test,\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\x80\xe4\xb8\xaa\xe6\xb5\x8b\xe8\xaf\x95'             
print(bytes_str.decode())               # 以utf-8方式解码
print(bytes_str.decode('gbk'))               # 以gbk方式解码,会报错

运行结果:

this is a test,这是一个测试

如果编码缺失,也会有异常,但我们可以指定参数来忽略缺失的字节码
例2:

# 以utf-8方式编码
bytes_str = b'this is a test,\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\x80\xe4\xb8\xaa\xe6\xb5\x8b\xe8'             
# print(bytes_str.decode())                 # 未指定忽略缺失的编码,会报错
print(bytes_str.decode(errors='ignore'))    # 指定了丢弃确实的字节码,正常解码
print(bytes_str.decode(errors='replace'))   # 替换了不能正确解码的内容,正常解码

运行结果:

this is a test,这是一个测					# 丢弃了
this is a test,这是一个测�				# 替换了
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爬坡的蜗牛

你的鼓里是我创造最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值