我想刮使用Python一个网站,是充满了可怕的问题,一个是在顶部的错误编码:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
这是错误的,因为页面是完全一样出现以下内容:
Nell’ambito
代替
Nell'ambito
(请注意’
替换'
)
如果我理解正确的话,这种情况正在发生,因为UTF-8字节(可能是数据库编码)被解释为ISO-8859-1字节(由字符集的meta标签强制)。 我发现这个链接一些初步的解释http://www.i18nqa.com/debug/utf8-debug.html
我使用BeautifulSoup来浏览网页,谷歌App Engine的网址抓取提出要求,但我需要的是了解什么是我的数据库来存储固定字符串正确的方法’
通过编码字符串'
。
我使用BeautifulSoup来浏览网页,谷歌App Engine的网址抓取提出要求
你喂养从编码Content-Type
HTTP头到BeautifulSoup?
如果HTML页面既具有Content-Type头和meta标签,标题应该“双赢”,所以如果你只考虑meta标签可能会得到错误的编码。
否则,你既可以养活固定编码'utf-8'
秀美,或indvidually修复了每个字符串。
恼人的注意:它实际上不是ISO-8859-1。 当网页说,ISO-8859-1,浏览器实际上把它意味着Windows代码页1252,它类似于8859,但不一样的。 该€
似乎表明CP1252,因为它没有出现在8859。
u'Nell’ambito'.encode('cp1252').decode('utf-8')
如果内容与某些UTF-8和相同的页面(通常是由于不良的数据库内容处理)在某些CP1252编码不一致,这将是恢复它的唯一途径,抓住UnicodeError
并返回原来的字符串时,它不会转码。
文章来源: Scraping a website whose encoding is iso-8859-1 instead of utf-8: how do I store the correct unicode in my database?