当在Python 2.X文件中写中文注释或输出中文时候,经常会出现编译错误(在Python 3.X中没有这种错误。)
SyntaxError: Non-ASCII character '\xe7' in file chec.py
这是因为Python 2.X的默认编码文件是用ASCII码,如果想要编译通过,则只需要在文件开头加入一行代码将文件存成UTF-8格式。
看到网上给的解决办法是再行首加入一行代码声明编码方式:
#coding=utf-8
可是加入之后还是错误,原因在于该行代码没有出现在行首,原本的代码是:
#!/usr/bin/env python
#coding=utf-8
后来把中间那行去掉之后:
#!/usr/bin/env python
#coding=utf-8
就不报错了。
------------------
另外进行写入文件的时候会涉及到转码的行为,可能会报如下错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
这是因为在转时Python 会自动的先将 query解码(decode)为 unicode ,然后再编码(encode)成 其他形式(如gbk)。因为解码是python自动进行的,我们没有指明解码方式,python 就会使用 sys.defaultencoding 指明的方式来解码。很多情况下 sys.defaultencoding为ANSCII,如果 query 不是这个类型就会出错。因此需要增加对query的解码行为,可以单独的解码也可以直接定义默认的解码方式:
query = '中文字符'
query.decode('utf-8').encode('gbk')
or
import sys
reload(sys)
sys.setdefaultencoding('utf-8')