posts - 172, comments - 59, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

python中文支持 报错解决

Posted on 2016-05-20 14:26 魔のkyo 阅读(51) 评论(0)  编辑 收藏 引用
如果遇到错误
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一次才有意义。
只有注册用户登录后才能发表评论。