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

Writing to file in python gives ascii error

我正在尝试将网络抓取的结果写入 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,但在电脑上遇到了类似的问题 运行 相同的脚本。使用 python 2.7

是的,使用编解码器模块中的 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'))