Ale*_* P. 1 python unicode beautifulsoup utf-8
我想用一个充满可怕问题的Python来抓一个网站,其中一个是顶部错误的编码:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Run Code Online (Sandbox Code Playgroud)
这是错误的,因为页面中出现如下所示:
Nell’ambito
代替
Nell'ambito(请注意’替换')
如果我理解正确,这是因为utf-8字节(可能是数据库编码)被解释为iso-8859-1字节(由元标记中的字符集强制).我在这个链接http://www.i18nqa.com/debug/utf8-debug.html找到了一些初步的解释
我正在使用BeautifulSoup来浏览页面,Google App Engine的urlfetch来发出请求,但是我需要的是了解在数据库中存储’通过对字符串进行编码来修复的字符串的正确方法'.
我使用BeautifulSoup来浏览页面,Google App Engine的urlfetch来发出请求
您是否将Content-TypeHTTP标头中的编码提供给BeautifulSoup?
如果HTML页面同时包含Content-Type标头和元标记,则标题应为"win",因此如果您只使用元标记,则可能会得到错误的编码.
否则,您可以将固定编码提供'utf-8'给Beautiful,也可以单独修复每个字符串.
恼人的说明:它实际上不是ISO-8859-1.当网页说 ISO-8859-1时,浏览器实际上将其视为Windows代码页1252,类似于8859-1但不相同.这€似乎表明cp1252,因为它不存在于8859-1.
u'Nell’ambito'.encode('cp1252').decode('utf-8')
Run Code Online (Sandbox Code Playgroud)
如果内容与某些UTF-8和某些cp1252在同一页面上编码不一致(通常是由于数据库内容处理不当),这将是恢复它的唯一方法,捕获UnicodeError并返回原始字符串,如果它不会转码.
| 归档时间: |
|
| 查看次数: |
2211 次 |
| 最近记录: |