何时使用utf8作为py文件中的标题

时间:2012-12-10 19:27:16

标签: python utf-8

来自下载代码的某些源文件具有以下标题

# -*- coding: utf-8 -*-

我知道utf-8编码是什么,但为什么它需要作为python源文件中的头文件?

5 个答案:

答案 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 类型,即字节序列的编码。您仍然必须在所有输入和输出操作中定义编码。这些操作仍然取决于您的环境,因此最好遵循以下规则:显式优于隐式