我正在尝试学习在源文件中使用编码声明来阅读PEP 263并且我自己进行实验,但我遇到了一些麻烦。
这是我的文件 cod.py :
# -*- coding: utf-16 -*-
print('ciao')
我用UTF-16编码保存了它;现在:
antox@antox-pc ~/Scrivania $ python3 cod.py
File "cod.py", line 1
SyntaxError: Non-UTF-8 code starting with '\xff' in file cod.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
所以我不明白我哪里出错了。
P.S。我使用的是gedit 2.30.4
答案 0 :(得分:0)
不接受UTF-16作为Python源代码的编码。从PEP 263(概念,第1项):
任何允许处理前两行的编码 上面指出的方式允许作为源代码编码,这个 包括ASCII兼容编码以及某些编码 多字节编码,如Shift_JIS。它不包括 对所有字符使用两个或多个字节的编码 例如UTF-16。这样做的原因是保持编码 标记器中的检测算法简单。
所以你得到的错误是:你可以使用不同的编码(默认的UTF-8除外),只要它可以被Python检测到。