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

461 投票
2 回答
1081513 浏览
提问于 2025-04-16 19:14

考虑一下:

$ 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 个回答

92

别忘了检查一下你的文本编辑器是否正确地把代码编码成UTF-8格式。

如果不这样做,你可能会有一些看不见的字符,这些字符不会被当作UTF-8来理解。

874

在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)

撰写回答