python2中的字符串编码注意事项

1、不同编码之间进行转换的桥梁是最上层的字符集。

2、python2的字符本质是一种二进制码。

python环境下:

如图所示:
 

>>> s = "你好"
>>> s
'\xe4\xbd\xa0\xe5\xa5\xbd'
>>> type(s)
<type 'str'>
>>> s.decode("utf-8")
u'\u4f60\u597d'
>>> 

从打印出来的信息看,s本质是一个十六进制。所以需要解码 。

代開发票xxxxxxxx钱

相同字符串,不同编码规则下的,十六进制:
'\xe4\xbb\xa3\xe9\x96\x8b\xe5\x8f\x91\xe7\xa5\xa813537741120\xe9\x92\xb1' != '\xb4\xfa\xe9_\xb7\xa2\xc6\xb113537741120\xc7\xae'

所以比较需要使用什么饭的编码规则进行比较。
所以需要:底层二进制-->相应的正确解码规则-->最上层的字符集-->任意的编码规则-->编码规则下相应的二进制

python3:

>>> s="你好"
>>> type(s)
<class 'str'>
>>> s
'你好'
>>> s.decode("utf-8")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'decode'
>>> s.encode("utf-8")
b'\xe4\xbd\xa0\xe5\xa5\xbd'
>>>

python3中字符串是最上层的字符集,所以不能进行解码的。只有编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值