编码
2017-04-15 本文已影响55人
交易狗二哈
对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:
>>> ord('A')
65
>>>chr(65)
'A'
>>>ord('我')
25105
chr(25105)
'我'
Python对bytes类型的数据用带b前缀的单引号或双引号表示:
>>> x = b'ABC'
>>> type(x)
<class 'bytes'>
纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。
>>> str = '我是'
>>> str.encode('UTF-8')
b'\xe6\x88\x91\xe7\x9a\x84'
>>> b'\xe6\x88\x91\xe7\x9a\x84'.decode('UTF-8')
'我的'
如果是 \u6ce8\u91ca 类型的,直接 print输出就是汉字
>>> print('\u6ce8\u91ca')
注释
或者用 decode
>>> s = b'\u6ce8\u91ca' #python在前面加 b或者 encode()
>>> s.decode('unicode-escape')
'注释'
如果是 \u7f8e\u56fd 类型的,可以用上面的方法或者调用 json
>>> import json
>>> d = '\\u7f8e\\u56fd'
>>> x = json.loads('{"foo":"%s"}'%d)
>>> x0=x['foo']
>>> print(x0)
美国