133

默认情况下,Python 3 对源代码文件使用 UTF-8 编码。我还应该在每个源文件的开头使用编码声明吗?像# -*- coding: utf-8 -*-

4

2 回答 2

135

因为默认值UTF-8,所以您只需要在偏离默认值时使用该声明,或者如果您依赖其他工具(如 IDE 或文本编辑器)来使用该信息。

换句话说,就 Python 而言,只有当您想要使用不同的编码时,您才必须使用该声明。

其他工具,例如您的编辑器,可以支持类似的语法,这就是PEP 263 规范允许语法相当灵活的原因(它必须是注释,文本coding必须存在,后跟一个:=字符和可选的空格,后跟一个公认的编解码器)。

请注意,它仅适用于 Python读取源代码的方式。它不适用于执行该代码,因此不适用于打印、打开文件或任何其他 I/O 操作如何在字节和 Unicode 之间进行转换。有关 Python、Unicode 和编码的更多详细信息,我强烈建议您阅读Python Unicode HOWTO或 Ned Batchelder 的非常详尽的Pragmatic Unicode talk

于 2012-12-29T15:28:41.447 回答
11

不,如果:

  • 整个项目仅使用UTF-8,这是默认设置。
  • 并且您确定您的 IDE 工具不需要每个文件中的编码声明。

是的,如果

  • 您的项目依赖于不同的编码
  • 或依赖于许多编码。

对于多编码项目:

如果某些文件在non-utf-8.UTF-8Explicit is better than implicit.

参考:

  • PyCharm 不需要该声明:

在pycharm中为特定文件配置编码

  • vim 不需要那个声明,但是:
# vim: set fileencoding=<encoding name> :
于 2019-03-08T09:14:12.263 回答