在python源代码中使用utf-8编码

Working with utf-8 encoding in Python source

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
7
$ 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字符串?


在源文件头中,您可以声明:

1
2
3
#!/usr/bin/env python
# -*- coding: utf-8 -*-
....

在PEP 0263中有描述:

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

1
2
3
4
5
6
7
#!/usr/bin/env python
# -*- coding: utf-8 -*-

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

在python 3中不需要这个声明,因为UTF-8是默认的源代码(参见pep 3120)。

此外,可能需要验证文本编辑器是否正确地用UTF-8编码代码。否则,您可能有不可见的字符,这些字符不能解释为UTF-8。


不要忘记验证文本编辑器是否正确编码了UTF-8代码。否则,您可能有不可见的字符,这些字符不能解释为UTF-8。