对Python中字符串编码的理解

字符串,作为Python中基本数据类型中的一种,也是使用最频繁的数据类型。这里对字符串的编码格式做一个总结。


在Python中字符串有两种形式:一种是bytes类型,一种是str类型。

str ->> bytes:encode编码
bytes ->> str:decode解码
  • 文本总是Unicode,由str类型进行表示
  • 二进制数据使用bytes进行表示
  • 网络中数据的传输是以二进制(字节码)的方式来进行的
  • 所以为了达到网络传输的目的,数据需要有如下一个转换:
  • 在进入网络中前,转换成字符串
  • 在网络中使用二进制
  • 从网络传递到本地,转换成字符串
可以使用下图这种理解方式:

编码示例byDaBing

1.1参数
  • encoding – 可选参数,要使用的编码,默认编码为 ‘utf-8’。
  • errors – 可选参数,设置不同错误的处理方案。默认为 ‘strict’,意为编码错误引起一个UnicodeError。 其他可能得值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过 codecs.register_error() 注册的任何值。
1.2示例:
bingdeMacBook-Pro:~ bingyao$ python3
Python 3.6.2 (v3.6.2:5fd33b5926, Jul 16 2017, 20:11:06)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> text="文本"
>>> text
'文本'
>>> # 编码
... en_text = text.encode()
>>> en_text
b'\xe6\x96\x87\xe6\x9c\xac'
>>> # 解码
... de_text = en_text.decode()
>>> de_text
'文本'
>>>
注意点:

如果需要选定编码方式(type参数),编码方式解码方式必须一样,否则就会出现乱码

示例:

bingdeMacBook-Pro:~ bingyao$ python3
Python 3.6.2 (v3.6.2:5fd33b5926, Jul 16 2017, 20:11:06)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> text = "文本"
>>> text
'文本'
>>>
>>>
>>> # 编码使用utf-8,默认就是utf-8
... en_text = text.encode("utf-8")
>>> en_text
b'\xe6\x96\x87\xe6\x9c\xac'
>>>
>>>
>>> # 解码使用gbk
... de_text = en_text.decode("gbk")
>>> de_text
'鏂囨湰'

通过上面的示例可以看到,如果使用的解码方式和编码方式不配会出现乱码的现象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值