python3 encode中的unicode-escape和raw_unicode_escape

  1. encode
    encode将字符串转换为bytes类型的对象 (即b为前缀, bytes类型), 即Ascll编码, 字节数组
>>> a0 = '哈哈'
>>> b = a0.encode()
>>> type(b)
<class 'bytes'>
>>> 
>>> b
b'\xe5\x93\x88\xe5\x93\x88'
  1. decode
    将字节串转为字符串
>>> a1 = b'\xe7\x8e\x8b\xe8\x80\x85\xe5\x86\x9c\xe8\x8d\xaf'
>>> b = a1.decode()
>>> b
'王者农药'
>>> type(b)
<class 'str'>
  1. encode(‘raw_unicode_escape’)和 decode(‘raw_unicode_escape’)
    若某字符串的内容为bytes形式, 如 a = ‘\xe7\x8e\x8b\xe8\x80\x85\xe5\x86\x9c\xe8\x8d\xaf’
    可使用encode(‘raw_unicode_escape’)将此str转化为bytes, 再decode为str
    可使用decode(‘raw_unicode_escape’)输出内容为bytes形式的字符串
>>> a = '\xe7\x8e\x8b\xe8\x80\x85\xe5\x86\x9c\xe8\x8d\xaf'
>>> b = a.encode('raw_unicode_escape')
>>> type(b)
<class 'bytes'>
>>> b
b'\xe7\x8e\x8b\xe8\x80\x85\xe5\x86\x9c\xe8\x8d\xaf'
>>> 
>>> b.decode()
'王者农药'
>>> 
>>> b.decode('raw_unicode_escape') 
'ç\x8e\x8bè\x80\x85å\x86\x9cè\x8d¯' 
  1. encode(‘unicode-escape’)和 decode(‘unicode-escape’)
    若某字符串的内容为unicode形式, 如s = ‘\u5403\u9e21\u6218\u573a’, 在py3中默认为utf-8编码, py3将其自动解释为 ‘吃鸡战场’
    encode(‘unicode-escape’)可将此str编码为bytes类型, 内容则是unicode形式
    decode(‘unicode-escape’)可将内容为unicode形式的bytes类型转换为str
>>> a = '\u5403\u9e21\u6218\u573a'
>>> b = a.encode('unicode-escape')
>>> type(b)
<class 'bytes'>
>>> b
b'\\u5403\\u9e21\\u6218\\u573a'
>>> 
>>> b.decode('utf-8')
'\\u5403\\u9e21\\u6218\\u573a'
>>> 
>>> 
>>> c = b.decode('utf-8')
>>> c
'\\u5403\\u9e21\\u6218\\u573a'
>>> 
>>> c.encode()
b'\\u5403\\u9e21\\u6218\\u573a'
>>> 
>>> c.encode().decode('unicode-escape')
'吃鸡战场'
  1. python2使用ASC11码作为默认编码方式, python3的默认编码为utf-8
Python 2.7.16 (default, Aug 24 2019, 18:37:03) 
[GCC 4.2.1 Compatible Apple LLVM 11.0.0 (clang-1100.0.32.4) (-macos10.15-objc-s on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> s = u'\u5403\u9e21\u6218\u573a'
>>> s
u'\u5403\u9e21\u6218\u573a'
 
 
Python 3.7.4 (v3.7.4:e09359112e, Jul  8 2019, 14:54:52) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> s = u'\u5403\u9e21\u6218\u573a'
>>> s
吃鸡战场 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值