混合使用UTF-8和ASCII编码?

sup*_*bie 1 python unicode parsing ascii utf-8

我目前正在使用Python 2.7解析大型文本文件,其中一些最初是用Unicode或UTF-8编码的.

对于包含直接与UTF-8中的字符串交互的函数的模块,我包含# -*- coding: utf-8 -*-在文件的顶部,但对于仅使用ascii的函数,我没有打扰.

最终,这些模块导致更大的模块,并且所有解析的字符串混合在一起.包含# -*- coding: utf-8 -*-在每个文件的顶部是一种好习惯吗?

这有益处吗?

Fre*_*Foo 8

# -*- coding: utf-8 -*-声明源文件的编码.它与Python处理输入或输出的方式无关.它只是意味着您可以使用UTF-8编写字符串文字和注释.

这是编码声明的效果.假设我有一个程序

# -*- coding: utf-8 -*-
# the following prints the Dutch word "één"
print(u"\xe9\xe9n")
Run Code Online (Sandbox Code Playgroud)

这正是评论所说的.但如果我删除coding声明,它会崩溃:

File "a.py", line 1
SyntaxError: Non-ASCII character '\xc3' in file a.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Run Code Online (Sandbox Code Playgroud)

请注意,第1行是注释.可以通过删除评论来修复程序,只留下

print(u"\xe9\xe9n")
Run Code Online (Sandbox Code Playgroud)

它仍然与第一个程序完全相同.

  • 小nit:`coding`*声明*,而不是更改,源文件的编码.编码器实际上必须以声明的编码保存文件. (2认同)