' ASCII'编解码器在执行bs时不能解码字节0xcb

时间:2016-08-10 09:53:24

标签: python xml file encoding beautifulsoup

我从Merriam-Webster的API本地保存xml页面,让我给你一个url: http://www.dictionaryapi.com/api/v1/references/collegiate/xml/apple?key=bf534d02-bf4e-49bc-b43f-37f68a0bf4fd

这是一个例子。 我从url中获取它并将其保存为xml文件。

现在我想打开它,但发生UnicodeDecodeError

我做了:

page = open('test.xml')
bs = BeautifulSoup(page)

然后发生以下错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xcb

我尝试将网址u'test.xml'设置为无效。

  
    
      

sys.getdefaultencoding()          ' UTF-8'

    
  

编码配置已经是utf-8,无论如何都无法解决问题。感谢您的建议。

1 个答案:

答案 0 :(得分:1)

您需要将编码指定为utf-8,这是数据编码的内容,文件名与内部的内容无关,因此前缀为u以使unicode字符串无效:

import io
with io.open('test.xml', encoding="utf-8") as page:
      bs = BeautifulSoup(page)