Posted on 2016-05-20 14:26
魔のkyo 阅读(323)
评论(1) 编辑 收藏 引用
如果遇到错误
SyntaxError: Non-ASCII character 'XXX' in file XXX on line XX, but no encoding declared;
说明在文件中包含了中文,但是没有指定文件的编码,需要在文件的头部加上指定编码的注释,例如utf-8按如下方式指定
# -*- coding: utf-8 -*-
或者
#encoding=utf-8
如果遇到错误
UnicodeEncodeError: 'ascii' codec can't encode character u'XXX' in position XX: ordinal not in range(128)
说明在代码中有将str向其他编码转换的操作,这里向Unicode进行转换,它默认以为str是ascii编码的,所以出错了,
可以通过下面的方式指定默认编码
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
更详细的解释参考这里
http://blog.csdn.net/crazyhacking/article/details/39375535
大概意思是说
s = '中文'
data = s.encode('gb2312')
这里实际上要先对s进行一次decode
data = s.decode(defaultencoding).encode('gb2312')
decode使用的编码就是上面指定的默认编码,如果不指定就是ascii,其实对ascii来说只能包含英文数字和半角符号,所以decode不decode都一样,如果包含了中文先decode一次才有意义。