Skip to main content
 首页 » 编程设计

python之SyntaxError : Non-ASCII character '\xe3' in file G:\test. py on line 2, but no encoding declared

2025年05月04日8kevingrace

我有一个简单的脚本。

# -*- encoding : utf-8 -*- 
episode_title = "ザ・ロック(日本語吹替版)".decode('utf-8') 
print episode_title.encode('utf-8') 

但它在我的cmd 控制台(Win8 PC,编码是big5)上不起作用。

SyntaxError: Non-ASCII character '\xe3' in file G:\test.py on line 2, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details 

虽然我已经把代码页改成了utf-8

chcp 65001  

还是不行。

但是当我在我的 IPython notebook 中运行它时,它起作用了! (也适用于 PyCharm 和 IPython Qt 控制台)

ザ・ロック(日本語吹替版) 

但是当我在 Ubuntu 中运行它时:

aaron@ubuntu:~$ python test.py 
  File "test.py", line 2 
SyntaxError: Non-ASCII character '\xe3' in file test.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 

令我惊讶的是它无法在 Ubuntu 中运行。

谁能解释一下这个谜团?

为什么它在 IPython Notebook 或 PyCharm 中运行?但不是在 CMD 或 Ubuntu 终端中?

请您参考如下方法:

您的评论不符合 PEP 的要求,因为您在单词 encoding 和冒号之间留了一个空格:

# -*- encoding : utf-8 -*- 
#             ^ 

PEP指定用于匹配声明的确切正则表达式:

coding[:=]\s*([-\w.]+) 

因此 Python 查找文字文本 coding 后跟冒号 : 或等号 =,后跟零个或多个空格字符,然后是编解码器。

您需要做的就是删除您拥有的多余空间:

# -*- encoding: utf-8 -*- 

注释仅适用于 Python 必须从磁盘读取源代码的情况;在交互式解释器中,您通过平台的正常本地化支持,使用控制台或终端输入您的代码,该控制台或终端还声明了一种编码。 IPython 和 PyCharm 属于这一类;您的键盘输入已使用该信息正确解码,不需要声明。