在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-8string?

在源头中你可以声明:

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

在PEP 0263中描述:

那么你可以在string中使用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) 

Python 3中不需要此声明,因为UTF-8是默认的源编码(请参阅PEP 3120 )。

除了源代码中的以上头文件:

 #!/usr/bin/env python # -*- coding: utf-8 -*- 

不要忘记validation你的文本编辑器是否正确地编码你的代码在UTF-8。 否则,你可能会有不能被解释为utf-8的不可见字符。