# -*- coding: utf-8 -*-
与
sys.setdefaultencoding('utf-8')
是两个不同的概念。
第一种:是指定当前程序文件的编码方式。即编译器在解析code是认为code是哪种编码方式。如果不像第一种那样指定,我们的程序中是不能以中文声明字符串的。
第二种:是指定了python的unicode类型使用何种编码来存储unicode字符串。如果不声明,默认使用uscii。
作者的错误可以很容易的验证,编写如下脚本:
#coding:utf8
unicode('我')
python运行上面程序同样会报如下错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)
在第二行加入如下三行才可以修正该错误:
import sys
reload(sys)
sys.setdefaultencoding('utf8')