python - 在 python 中写入文件会出现 ascii 错误

标签 python utf-8 ascii

我正在尝试将网络抓取的结果写入 html 文件。我正在使用 Beautiful Soup 从网页中抓取链接和文本。然后,当我创建文件并写入文件时,出现以下错误:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 939-940: ordinal not in range(128)

写入文件的行如下所示:

file_object.write(file_content)

当我改为这样做时:

file_object.write(file_content.encode('utf-8'))

我没有收到错误,但它无法打印特殊字符,例如 å 或 ä。

我意识到这是某种编码错误,但我不明白如何解决它。项目整体is located here ,第 81 行,因为我在提取可运行和逻辑子部分时遇到了问题。

我使用的是 Mac,但在 PC 上运行相同的脚本时遇到了类似的问题。使用 python 2.7

最佳答案

是的,使用 codecs 模块中的 open(),或者,在 Python 3 中,正常(内置)open() 如下所示:

f = open(path, "wt", encoding="UTF-8")

但是,如果您不想过多更改代码,则不需要任何特殊的东西。 诀窍是在文件的开头添加正确的 BOM(字节顺序标记),以便打开它的编辑器知道它是一个 UTF-8 文件,并且应该这样对待。

Change you should make:
file_object.write('\xef\xbb\xbf'+file_content.encode('utf-8'))

关于python - 在 python 中写入文件会出现 ascii 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31231615/

相关文章:

python - 我可以使用生成的 swig 代码将 C++ 对象转换为 PyObject 吗?

python - 迭代工作簿中的工作表 - Python 嵌套 For 循环

python - 使用python错误将 'UCS-2 Little Endian'文件编码为 'utf8'

utf-8 - 如何恢复被mysqldump双重编码的数据库

perl - 在 Perl 中使用 "sort"作为 utf8 字符串

java - 如何在 Java 中创建密码

javascript - 为 javascript 输入转义 NSString

python - 如何重命名networkx图的单个节点?

python - 使用并行 Python 记录工作进程

c - 如何在 C 中将十进制 ascii 字符串转换为整数数组?