SyntaxError: Non-ASCII character '\xe3' in file G:\test.py on line 2, but no encoding declared
SyntaxError: Non-ASCII character '\xe3' in file G:\test.py on line 2, but no encoding declared
我有一个简单的脚本。
# -*- 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 笔记本中时,它起作用了! (也适用于 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 笔记本或 PyCharm 中?但不在 CMD 或 Ubuntu 终端?
您的评论不符合 PEP 的要求,因为您在单词 encoding
和冒号之间留下了 space:
# -*- encoding : utf-8 -*-
# ^
PEP 指定用于匹配声明的确切正则表达式:
coding[:=]\s*([-\w.]+)
因此 Python 查找文字文本 coding
后跟冒号 :
或等号 =
,后跟零个或多个白色 space 字符,然后是编解码器。
您需要做的就是删除您拥有的多余 space:
# -*- encoding: utf-8 -*-
当 Python 必须从磁盘读取源代码时,注释仅适用于 ;在 交互式解释器 中,您通过平台的正常本地化支持,使用还声明编码的控制台或终端输入代码。 IPython 和 PyCharm 属于此类;您的键盘输入已使用该信息正确解码,不需要声明。
只需更换
# -*- encoding : utf-8 -*-
和
# encoding: utf-8
我有一个简单的脚本。
# -*- 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 笔记本中时,它起作用了! (也适用于 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 笔记本或 PyCharm 中?但不在 CMD 或 Ubuntu 终端?
您的评论不符合 PEP 的要求,因为您在单词 encoding
和冒号之间留下了 space:
# -*- encoding : utf-8 -*-
# ^
PEP 指定用于匹配声明的确切正则表达式:
coding[:=]\s*([-\w.]+)
因此 Python 查找文字文本 coding
后跟冒号 :
或等号 =
,后跟零个或多个白色 space 字符,然后是编解码器。
您需要做的就是删除您拥有的多余 space:
# -*- encoding: utf-8 -*-
当 Python 必须从磁盘读取源代码时,注释仅适用于 ;在 交互式解释器 中,您通过平台的正常本地化支持,使用还声明编码的控制台或终端输入代码。 IPython 和 PyCharm 属于此类;您的键盘输入已使用该信息正确解码,不需要声明。
只需更换
# -*- encoding : utf-8 -*-
和
# encoding: utf-8