Skip to main content
 首页 » 编程设计

python之语法错误 : encoding declaration in Unicode string

2025年05月04日9虾米哥

如果我尝试在文件顶部使用像 #coding=utf-8 这样的魔术注释,会发生以下情况:

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

我真的没有做错任何事。这是代码:

#coding=utf-8 
 
string = raw_input() 
chars = {} 
for i in string: 
    if i in chars: 
        chars[i] += 1 
    else: 
        chars[i] = 0 
print chars 

我使用 repl.it。

请您参考如下方法:

你从你的问题中遗漏了一些东西:你正在使用 exec 来执行这段代码。并且您将 Unicode 对象 传递给了 exec,这意味着您已经声明源是 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 

您不能在传递给 exec 的 Unicode 文本中使用 PEP 263 声明。

如果您使用的是“自定义”环境,例如 repl.it , 然后是的,这样的环境总是使用像 exec 这样的技巧来执行代码,并且它们从您的浏览器加载源代码作为 Unicode。查看actual code used ,它将 JSON 源字符串传递给 exec(其中此类字符串始终为 unicode 字符串)。