本文翻译自:Working with UTF-8 encoding in Python source [duplicate]
This question already has an answer here: 这个问题在这里已有答案:
Consider: 考虑:
$ cat bla.py
u = unicode('d…')
s = u.encode('utf-8')
print s
$ python bla.py
File "bla.py", line 1
SyntaxError: Non-ASCII character '\xe2' in file bla.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
How can I declare UTF-8 strings in source code? 如何在源代码中声明UTF-8字符串?
#1楼
参考:https://stackoom.com/question/QOB8/在Python源中使用UTF-编码-重复
#2楼
Do not forget to verify if your text editor encodes properly your code in UTF-8. 不要忘记验证文本编辑器是否正确编码了UTF-8中的代码。
Otherwise, you may have invisible characters that are not interpreted as UTF-8. 否则,您可能会有不可解释为UTF-8的不可见字符。
#3楼
In the source header you can declare: 在源标头中,您可以声明:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
....
It is described in the PEP 0263 : 它在PEP 0263中描述:
Then you can use UTF-8 in strings: 然后你可以在字符串中使用UTF-8:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
u = 'idzie wąż wąską dróżką'
uu = u.decode('utf8')
s = uu.encode('cp1250')
print(s)
This declaration is not needed in Python 3 as UTF-8 is the default source encoding (see PEP 3120 ). Python 3中不需要此声明,因为UTF-8是默认的源编码(请参阅PEP 3120 )。
In addition, it may be worth verifying that your text editor properly encodes your code in UTF-8. 此外,可能值得验证您的文本编辑器是否正确编码了UTF-8中的代码。 Otherwise, you may have invisible characters that are not interpreted as UTF-8. 否则,您可能会有不可解释为UTF-8的不可见字符。