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

时间:2011-06-09 07:29:53

标签: python encoding utf-8 character-encoding

$ 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字符串?

2 个答案:

答案 0 :(得分:748)

在源标题中,您可以声明:

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

PEP 0263

中对此进行了描述

然后你可以在字符串中使用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)。

此外,您可能需要验证文本编辑器是否在utf-8中正确编码了您的代码。否则,您可能会有不可解释为utf-8的不可见字符。

答案 1 :(得分:84)

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