当使用UTF-8作为PY文件头(When to use utf8 as a header in py

2019-08-03 20:22发布

一些源文件,已下载的代码,有下列头

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

我有一个想法,UTF-8编码是什么,但为什么它需要在一个Python源文件中的头?

Answer 1:

无论你需要在你的代码字符不是来自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


Answer 2:

始终使用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


Answer 3:

当您使用非ASCII字符。 例如,当我的评论我的源在挪威,如果ØÆÅ发生在的.py charachters它会抱怨,而不是“编译”。



Answer 4:

每当文本读取或写入,编码进来玩。 总是。 Python解释器有阅读您的文件文本,去了解它。 在那里你可以逃脱,而无需处理编码的唯一情况是,当你只在ASCII范围内使用的字符。 解释器可以在这种情况下使用几乎任何编码在世界上,并得到它的权利,因为几乎所有的编码编码这些字符相同的字节。

你不应该使用coding: utf-8只是因为你有你的文件以外的ASCII字符,它甚至是有害的。 这是Python解释器的提示,告诉它什么编码的文件是,除非你已经配置你的文本编辑器,文本编辑器很可能不会保存为UTF-8文件。 所以,现在你给Python解释器的提示,是错误的。

所以,你应该使用它时,你的文件以UTF-8编码。 如果在Windows 1252的已编码,你应该使用coding: windows-1252等。



Answer 5:

更直接的答案:

在Python 3+:你不需要申报。 UTF-8是默认值。 请确保该文件是UTF-8编码。 一些Windows编辑器默认不拥有它。 它不会伤害宣布它,有些编辑会使用它。

在Python 2:始终。 默认值是取决于操作系统。

请记住:这只是你的源代码文件。 现在,在第三个千年的字符串类型不存在了。 你必须照顾类型的文本 ,这是字节编码的序列。 你仍然在所有的输入和输出操作来定义的编码。 这些操作仍将取决于您的环境,所以它仍然是更好地遵循规则: 明确优于隐式



文章来源: When to use utf8 as a header in py files
标签: python utf-8