我应该在Python3中使用编码声明吗?

2024-03-29 13:49:29 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 文件声明编码源代码情况utf源文件coding
2条回答

不,如果:

  • 整个项目只使用UTF-8,这是默认值。
  • 而且你确信你的IDE工具不需要在每个文件中都有编码声明。

是的,如果

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

对于多编码项目:

If some files are encoded in the non-utf-8, then even for these encoded in UTF-8 you should add encoding declaration too, because the golden rule is Explicit is better than implicit.

参考:

  • PyCharm不需要声明:

configuring encoding for specific file in pycharm

  • vim不需要声明,但是:
# vim: set fileencoding=<encoding name> :

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

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

其他工具(如编辑器)可以支持类似的语法,这就是为什么PEP 263 specification允许在语法上有相当大的灵活性(它必须是注释,文本coding必须在那里,后面是:=字符和可选空白,后面是可识别的编解码器)。

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

相关问题 更多 >