Python 3默认使用UTF-8编码的源代码文件。我应该在每个源代码文件的开头使用编码声明吗?比如# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
jtw3ybtb1#
因为默认的 * 是 * UTF-8,所以只有当你偏离默认值时,或者如果你依赖其他工具(比如IDE或文本编辑器)来利用这些信息,你才需要使用这个声明。换句话说,* 就Python而言 *,只有当你想使用不同的编码时,你才必须使用那个声明。其他工具,如编辑器,可以支持类似的语法,这就是为什么PEP 263 specification在语法上允许相当大的灵活性(它必须是一个注解,文本coding必须在那里,后跟一个:或=字符和可选的空格,后跟一个可识别的编解码器)。请注意,它只适用于Python * 如何读取源代码 *。它不适用于执行该代码,因此不适用于打印,打开文件或任何其他I/O操作如何在字节和Unicode之间转换。有关Python,Unicode和编码的更多细节,我强烈建议您阅读Python Unicode HOWTO,或Ned Batchelder的非常全面的Pragmatic Unicode talk。
coding
:
=
at0kjp5o2#
UTF-8
对于多编码项目:如果一些文件是用non-utf-8编码的,那么即使是用UTF-8编码的文件,也应该添加编码声明,因为黄金法则是Explicit is better than implicit.。
non-utf-8
Explicit is better than implicit.
configuring encoding for specific file in pycharm
# vim: set fileencoding=<encoding name> :
2条答案
按热度按时间jtw3ybtb1#
因为默认的 * 是 * UTF-8,所以只有当你偏离默认值时,或者如果你依赖其他工具(比如IDE或文本编辑器)来利用这些信息,你才需要使用这个声明。
换句话说,* 就Python而言 *,只有当你想使用不同的编码时,你才必须使用那个声明。
其他工具,如编辑器,可以支持类似的语法,这就是为什么PEP 263 specification在语法上允许相当大的灵活性(它必须是一个注解,文本
coding
必须在那里,后跟一个:
或=
字符和可选的空格,后跟一个可识别的编解码器)。请注意,它只适用于Python * 如何读取源代码 *。它不适用于执行该代码,因此不适用于打印,打开文件或任何其他I/O操作如何在字节和Unicode之间转换。有关Python,Unicode和编码的更多细节,我强烈建议您阅读Python Unicode HOWTO,或Ned Batchelder的非常全面的Pragmatic Unicode talk。
at0kjp5o2#
否,如果:
UTF-8
,这是默认值。是,如果
对于多编码项目:
如果一些文件是用
non-utf-8
编码的,那么即使是用UTF-8
编码的文件,也应该添加编码声明,因为黄金法则是Explicit is better than implicit.
。参考:
configuring encoding for specific file in pycharm