一些源文件,已下载的代码,有下列头
# -*- coding: utf-8 -*-
我有一个想法,UTF-8编码是什么,但为什么它需要在一个Python源文件中的头?
一些源文件,已下载的代码,有下列头
# -*- coding: utf-8 -*-
我有一个想法,UTF-8编码是什么,但为什么它需要在一个Python源文件中的头?
无论你需要在你的代码字符不是来自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
始终使用UTF-8,并确保您的编辑器也使用UTF-8。 如果你使用Python 27这样开始你的Python脚本:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
这是尼克·约翰逊关于Python和UTF-8的一个很好的博客文章:
http://blog.notdot.net/2010/07/Getting-unicode-right-in-Python顺便说一句,这个帖子被写入之前,他可以使用:
from __future__ import unicode_literals
当您使用非ASCII字符。 例如,当我的评论我的源在挪威,如果ØÆÅ发生在的.py charachters它会抱怨,而不是“编译”。
每当文本读取或写入,编码进来玩。 总是。 Python解释器有阅读您的文件文本,去了解它。 在那里你可以逃脱,而无需处理编码的唯一情况是,当你只在ASCII范围内使用的字符。 解释器可以在这种情况下使用几乎任何编码在世界上,并得到它的权利,因为几乎所有的编码编码这些字符相同的字节。
你不应该使用coding: utf-8
只是因为你有你的文件以外的ASCII字符,它甚至是有害的。 这是Python解释器的提示,告诉它什么编码的文件是,除非你已经配置你的文本编辑器,文本编辑器很可能不会保存为UTF-8文件。 所以,现在你给Python解释器的提示,是错误的。
所以,你应该使用它时,你的文件以UTF-8编码。 如果在Windows 1252的已编码,你应该使用coding: windows-1252
等。
更直接的答案:
在Python 3+:你不需要申报。 UTF-8是默认值。 请确保该文件是UTF-8编码。 一些Windows编辑器默认不拥有它。 它不会伤害宣布它,有些编辑会使用它。
在Python 2:始终。 默认值是取决于操作系统。
请记住:这只是你的源代码文件。 现在,在第三个千年的字符串类型不存在了。 你必须照顾类型的文本 ,这是字节编码的序列。 你仍然在所有的输入和输出操作来定义的编码。 这些操作仍将取决于您的环境,所以它仍然是更好地遵循规则: 明确优于隐式 。