我正在尝试将网页抓取结果写入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
答案 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'))