在python中写入文件会产生ascii错误

时间:2015-07-05 14:53:37

标签: 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

1 个答案:

答案 0 :(得分:1)

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