Python SyntaxError:Unicode字符串中的编码声明

Python SyntaxError:Unicode字符串中的编码声明,python,unicode,encoding,Python,Unicode,Encoding,如果我尝试在文件顶部使用一个神奇的注释,如#coding=utf-8,会发生以下情况: Traceback (most recent call last): File <string>, line 0 SyntaxError: encoding declaration in Unicode string 我使用repl.it。您在问题中遗漏了一点:您正在使用exec执行此代码。您向exec传递了一个Unicode对象,这意味着您已经声明源是Unicode文本: >>

如果我尝试在文件顶部使用一个神奇的注释,如
#coding=utf-8
,会发生以下情况:

Traceback (most recent call last):
  File <string>, line 0
SyntaxError: encoding declaration in Unicode string

我使用repl.it。

您在问题中遗漏了一点:您正在使用
exec
执行此代码。您向exec传递了一个Unicode对象,这意味着您已经声明源是Unicode文本:

>>> code = '''\
... # coding=utf8
... print 'hello world!'
... '''
>>> exec code
hello world!
>>> exec code.decode('utf8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 0
SyntaxError: encoding declaration in Unicode string
>>code=''\
... # 编码=utf8
... 打印“你好,世界!”
... '''
>>>执行代码
你好,世界!
>>>exec code.decode('utf8')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“”,第0行
SyntaxError:Unicode字符串中的编码声明
不能在传递给
exec
的Unicode文本中使用PEP 263声明


如果您使用的是“自定义”环境,例如,是的,这样的环境总是使用诸如
exec
之类的技巧来执行代码,并且它们从浏览器中以Unicode的形式加载源代码。请参阅,它将源于JSON的字符串传递给
exec
(其中这些字符串总是
unicode
字符串)。

它是
编码
,而不是
编码
@DeepSpace请参见。当然可以是
编码
@深度空间:不,不是。它可以是
解码
,或者
模糊编码
,或者只是
编码
。使用的正则表达式并不重要。见@MartijnPieters谢谢,很高兴知道!您是否有可能使用exec来运行此操作?否则错误消息就没有意义了。我认为解释器使用了
exec
。提前谢谢+1@ΈρικΚωνσταντπονλος:它在从JSON加载的Unicode字符串上执行;当阅读
sys.argv[0]
时,实际的脚本很容易获得@ΈρικΚωνστανττπονλος:对不起,我不是故意暗示你没有。
>>> code = '''\
... # coding=utf8
... print 'hello world!'
... '''
>>> exec code
hello world!
>>> exec code.decode('utf8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 0
SyntaxError: encoding declaration in Unicode string