Unicode的问题Django-蟒蛇URLLIB-MySQL
题
我读取的网页(http://autoweek.com),并试图进程,但获取的编码错误。汽车周刊宣布"iso-8859-1"的编码,并有个词"纽伯格林"(u有元音变音)
我这样做:
# -*- encoding: utf-8 -*-
import urllib
webpage = urllib.urlopen(feed.crawl_url).read()
webpage.decode("utf-8")
它给我下错误:
'utf8' codec can't decode bytes in position 7768-7773: unsupported Unicode code range"
如果我旁路。解码的步骤,并做一些解析与lxml库,它提出了一个错误的时候我的节分析的标题数据库:
'utf8' codec can't decode bytes in position 45-50: unsupported Unicode code range
我的数据库已经字符集utf8和排序规则utf-general-ci
我设置:
Django
蟒蛇2.4.3
MySQL5.0.22
MySQL-蟒蛇1.2.1
mod_python3.2.8
解决方案
autoweek.com 似乎搞不清它自己的编码。它声明冲突的字符集定义:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
和后...
<meta charset=iso-8859-1"/>.
ISO-8859-1是正确的,因为这是在从Web服务器的报头和由.info()
方法返回(它实际上解码),但是这证明你不一定能依靠的Content-Type声明在网页。则应该按照lavinio描述的方法。
其他提示
如果的 webpage
声明的编码 iso-8859-1
, 你就不能做 webpage.decode("iso-8859-1")
?
在这一点上, webpage
被解码。当它被写入数据库,映射应该处理char到utf8编码。
得到正确的编码,要么告诉webserver,你只接受,说,UTF-8然后你就会(希望)总能得到,因为只是关于每个人都读UTF-8(或者你可以尝试用ISO-8859-1);或使用。信息以检查了编码名流返回。
看看 urllib2-缺少的手册 和 快速参考HTTP头 对于细节。
不隶属于 StackOverflow