我把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来导航页面,googleappengine的urlphetch用于发出请求,但是我需要的是理解在数据库中存储一个字符串的正确方法是什么,它通过将字符串编码为'
来修复{
您是否正在将
Content-Type
HTTP头中的编码输入BeautifulSoup?在如果一个HTML页面同时有一个Content-Type头和一个meta标记,那么这个头应该是“win”的,所以如果您只使用meta标记,那么可能会得到错误的编码。在
否则,您可以将固定的编码
'utf-8'
输入Beautiful,或者单独地修改每个字符串。在烦人的注意:它实际上不是ISO-8859-1。当web页面称为ISO-8859-1时,浏览器实际上将其视为Windows代码页1252,与8859-1相似,但不相同。
€
似乎表示cp1252,因为它在8859-1中不存在。在如果内容在同一页面上使用一些UTF-8和一些cp1252编码不一致(通常是由于数据库内容处理不好),这将是恢复它的唯一方法,即捕获
UnicodeError
并在不进行代码转换时返回原始字符串。在相关问题 更多 >
编程相关推荐