在运行Python的时候,如果出现上图的错误信息,别担心,这是因为当你使用中文输出或注释时运行脚本的时候,导致出现问题。这是因为python默认的编码文件是ASCII码,但是你的代码中使用中文或者非英语字符,第一种最最简单的方法就是去文件里把中文部分处理掉,如果不想动它,可以参考以下几种方法:
建议在每个源文件的基础上,使用文件顶部的特殊注释声明编码,使python源代码编码既可见又可更改。为了让python知道这个编码声明,对于处理python源代码数据,需要进行一些概念更改。
如果没有给出其他编码提示,python将默认使用ascii作为标准编码。
要定义源代码编码,必须将一个提示,放到文件的第一行或第二行
# coding=<encoding name>
或者使用下面这两种格式也可以(这种格式支持更多的流行编辑器):
#!/usr/bin/python
# -*- coding: <encoding name> -*-
#!/usr/bin/python
# vim: set fileencoding=<encoding name> :
更准确地说,第一行或第二行必须与以下正则表达式匹配:
^[ \t\f]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)
然后将此表达式的第一组解释为编码名称。如果Python不能识别该编码,则在编译期间会引发错误。在包含编码声明的行上不能有任何python语句。如果第一行与第二行匹配,则忽略第二行。
为了帮助Windows等平台在Unicode文件的开头添加Unicode BOM标记,utf-8签名\xef\xbb\xbf也将被解释为“utf-8”编码(即使没有给出特殊的编码注释)。
如果源文件同时使用utf-8 BOM标记签名和magic编码注释,则只允许对注释进行“utf-8”编码。任何其他编码都会导致错误。
以下是一些示例,用于说明在Python源文件顶部定义源代码编码的不同样式:
(1)使用二进制和Emacs样式的文件编码注释:
#!/usr/bin/python
# -*- coding: latin-1 -*-
import os, sys
...
#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
import os, sys
...
#!/usr/bin/python
# -*- coding: ascii -*-
import os, sys
...
(2)不带注释,使用纯文本:
# This Python file uses the following encoding: utf-8
import os, sys
...
(3)文本编辑器可能有不同的定义文件编码的方法,例如:
#!/usr/local/bin/python
# coding: latin-1
import os, sys
...
(4)如果没有编码注释,python的解析器将采用ASCII文本:
#!/usr/local/bin/python
import os, sys
...
(5)对不起作用的注释进行编码:
A.失踪的“编码前缀::”
#!/usr/local/bin/python
# latin-1
import os, sys
...
B.编码注释不在第1行或第2行:
#!/usr/local/bin/python
#
# -*- coding: latin-1 -*-
import os, sys
...
C.不支持的编码:
#!/usr/local/bin/python
# -*- coding: utf-42 -*-
import os, sys
...