专栏名称: 志军
分享Python相关技术干货,偶尔扯扯其它的
目录
相关文章推荐
Python爱好者社区  ·  很严重了,大家别轻易离职 ·  昨天  
Python爱好者社区  ·  月薪3万35岁脑干出血程序员:ICU躺了28 ... ·  3 天前  
Python爱好者社区  ·  务必立即拿下软考证(政策红利) ·  4 天前  
Python爱好者社区  ·  Science披露:近3年,垃圾论文激增,9 ... ·  4 天前  
51好读  ›  专栏  ›  志军

Python 编码为什么那么蛋疼?

志军  · 公众号  · Python  · 2017-03-20 07:35

正文

请到「今天看啥」查看全文


u = u"禅"
>>> u
u'\u7985'
>>> type(u)
'unicode'>

我们要把 unicode 符号保存到文件或者传输到网络就需要经过编码处理转换成 str 类型,于是 python 提供了 encode 方法,从 unicode 转换到 str,反之亦然。

encode

>>> u = u"禅"
>>> u
u'\u7985'
>>> u.encode("utf-8")
'\xe7\xa6\x85'

decode

>>> s = "禅"
>>> s.decode("utf-8")
u'\u7985'
>>>

不少初学者怎么也记不住 str 与 unicode 之间的转换用 encode 还是 decode,如果你记住了 str 本质上其实是一串二进制数据,而 unicode 是字符(符号),编码(encode)就是把字符(符号)转换为 二进制数据的过程,因此 unicode 到 str 的转换要用 encode 方法,反过来就是用 decode 方法。

encoding always takes a Unicode string and returns a bytes sequence, and decoding always takes a bytes sequence and returns a Unicode string”.

清楚了 str 与 unicode 之间的转换关系之后,我们来看看什么时候会出现 UnicodeEncodeError、UnicodeDecodeError 错误。

UnicodeEncodeError

UnicodeEncodeError 发生在 unicode 字符串转换成 str 字节序列的时候,来看一个例子,把一串 unicode 字符串保存到文件

# -*- coding:utf-8 -*-






请到「今天看啥」查看全文