Python:编码错误 - 网页内容

时间:2013-01-06 08:51:47

标签: python unicode character-encoding

我正在尝试获取网页内容并解析它,而不是保存在mysql数据库中。

我实际上是为编码utf8的网页做的。

但是当我尝试使用8859-9编码网页时,我收到了错误消息。

获取网页内容的代码:

def getcontent(url):
    opener = urllib2.build_opener()
    opener.addheaders = [('User-agent', 'Magic Browser')]
    opener.addheaders = [('Accept-Charset', 'utf-8')]   
    #print chardet.detect(response).get('encoding)
    response = opener.open(url).read()
    opener.close()
    return response



url     = "http://www.meb.gov.tr/duyurular/index.asp?ID=4"
contentofpage = getcontent(url)
print contentofpage
print chardet.detect(contentofpage)
print contentofpage.encode("utf-8")

页面内容输出:     ...     E itimTeknolojileriGenelM d rl     ...

{'confidence': 0.7789909202570836, 'encoding': 'ISO-8859-2'}


Traceback (most recent call last):
  File "meb.py", line 18, in <module>
    print contentofpage.encode("utf-8")
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xee in position 458: ordinal not     in range(128)

实际上页面是土耳其语页面,编码是8859-9。

当我尝试使用默认编码时,我会看到 而不是一些字符。如何将页面内容转换为utf-8或turkish(iso-8859-9)

当我使用时 的unicode(contentofpage)

它得到了

追踪(最近一次通话):   文件“meb.py”,第20行,in     打印unicode(contentofpage) UnicodeDecodeError:'ascii'编解码器无法解码位置458中的字节0xee:序数不在范围内(128)

任何帮助?

1 个答案:

答案 0 :(得分:4)

我认为你想要解码,而不是编码,因为它已经被编码了。

print contentofpage.decode("iso-8859-9")

产生如下样本:

Eğitim Teknolojileri Genel Müdürlüğü