在Python源代码中使用UTF-8编码

考虑:

$ 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

我如何在源代码中声明UTF-8字符串?

1030469 次浏览

在Python 3中,UTF-8是默认的源编码(参见PEP 3120),因此Unicode字符可以在任何地方使用。

在Python 2中,你可以在源代码头中声明:

# -*- coding: utf-8 -*-
....

这在PEP 0263中描述。

然后你可以在字符串中使用UTF-8:

# -*- coding: utf-8 -*-


u = 'idzie wąż wąską dróżką'
uu = u.decode('utf8')
s = uu.encode('cp1250')
print(s)

不要忘记验证您的文本编辑器是否正确地以UTF-8编码您的代码。

否则,您可能会看到不被解释为UTF-8的不可见字符。