正文
for
more
information
.
>>>
import
sys
>>>
sys
.
getdefaultencoding
()
'ascii'
Python
3.5.2
(
default
,
Jun
29
2016
,
13
:
43
:
58
)
[
GCC
4.2.1
Compatible Apple
LLVM
7.3.0
(
clang
-
703.0.31
)]
on darwin
Type
"help"
,
"copyright"
,
"credits"
or
"license"
for
more
information
.
>>>
import
sys
>>>
sys
.
getdefaultencoding
()
'utf-8'
Python2 中的字符类型
Python2 中有两种和字符串相关的类型:str 和 unicode,它们的父类是 basestring。其中,str 类型的字符串有多种编码方式,默认是 ascii,还有 gbk,utf-8 等,unicode 类型的字符串使用 u'...' 的形式来表示,下面的图展示了 str 和 unicode 之间的关系:
两种字符串的相互转换概括如下:
>>>
'中文'
.
decode
(
'utf-8'
)
u
'\u4e2d\u6587'
>>>
u
'中文'
.
encode
(
'utf-8'
)
'\xe4\xb8\xad\xe6\x96\x87'
UnicodeEncodeError & UnicodeDecodeError 根源
用 Python2 编写程序的时候经常会遇到 UnicodeEncodeError 和 UnicodeDecodeError,它们出现的根源就是
如果代码里面混合使用了 str 类型和 unicode 类型的字符串,Python 会默认使用 ascii 编码尝试对 unicode 类型的字符串编码 (encode),或对 str 类型的字符串解码 (decode),这时就很可能出现上述错误。
下面有两个常见的场景,我们最好牢牢记住: