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

标签 python parsing unicode utf-8 ascii

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

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

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

这样做有好处吗?

最佳答案

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

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

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

这正是评论所说的。但是如果我删除 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

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

print(u"\xe9\xe9n")

它的行为仍然与第一个程序完全相同。

关于python - 混合使用 UTF-8 和 ASCII 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11029721/

相关文章:

java - 消息正文中的 Amazon SQS 无效二进制字符

c - 一些很好的 C 语言 Unicode 教程?

python - 确定性 python 脚本以非确定性方式运行

python - Django-2.2 NoReverseMatch 错误。无法重定向到下一页

php - 提取文本并保留 php 中的格式

php - 解析大文本字段

unicode - 我怎样才能找到 LC_XXX 语言环境整数常量的值,以便我可以将它们与 cffi 一起使用

javascript - 如何在模板中以 12h 格式渲染 Django Forms.TimeField?

python - 网页抓取 : Expand/contract bounding box depending on results

parsing - 如何使用 Data.ByteString 解析 7GB 文件?