来自下载代码的某些源文件具有以下标题
# -*- coding: utf-8 -*-
我知道utf-8编码是什么,但为什么它需要作为python源文件中的头文件?
答案 0 :(得分:10)
您需要在不是来自ascii的代码字符中使用,例如:
ă
解释员会抱怨他不理解这个字符。
通常在定义常量时会发生这种情况。
实施例: 添加到x.py
print 'ă'
然后启动一个python控制台
import x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "x.py", line 1
SyntaxError: Non-ASCII character '\xc4' in file x.py on line 1,
but no encoding declared;
see http://www.python.org/peps/pep-0263.html for details
答案 1 :(得分:4)
始终使用UTF-8并确保您的编辑器也使用UTF-8。 如果使用Python 27,请启动Python脚本:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
这是Nick Johnson关于Python和UTF-8的好博客文章:
http://blog.notdot.net/2010/07/Getting-unicode-right-in-Python 顺便说一下,这篇文章是在他可以使用之前编写的:
from __future__ import unicode_literals
答案 2 :(得分:3)
使用非ascii字符时。例如,当我在.py中出现charachtersØÆÅ时,我会用挪威语来评论我的来源,它会抱怨而不是“编译”。
答案 3 :(得分:2)
每当读取或写入文本时,编码就会发挥作用。总是。 python解释器必须将您的文件作为文本读取,以便理解它。您可以在不使用编码的情况下离开的唯一情况是您只使用ASCII范围内的字符。在这种情况下,解释器可以使用世界上几乎任何编码,并且正确,因为几乎所有编码都将这些字符编码为相同的字节。
您不应仅仅因为文件中包含ascii以外的字符而使用coding: utf-8
,它甚至可能有害。这是python解释器的提示,告诉它你的文件编码是什么。除非你配置了文本编辑器,否则文本编辑器很可能不会在utf-8中保存你的文件。所以现在你给python解释器的提示是错误的。
因此,当您的文件以utf-8编码时,您应该使用它。如果它在windows-1252中编码,则应使用coding: windows-1252
,依此类推。
答案 4 :(得分:1)
一个更直接的答案:
在Python 3+中:您无需声明。 默认为UTF-8。确保文件以UTF-8编码。某些Windows编辑器默认没有它。声明它不会有什么坏处,某些编辑器可能会使用它。
在Python 2中:始终。默认值取决于操作系统。
请记住:这只是关于您的源代码文件。现在在第三个千年中, string 类型不再存在。您必须注意 text 类型,即字节序列和的编码。您仍然必须在所有输入和输出操作中定义编码。这些操作仍然取决于您的环境,因此最好遵循以下规则:显式优于隐式。