Python中urllib2的解码问题
我正在尝试在Python 2.7中使用urllib2从网上获取一个页面。这个页面的编码是unicode(UTF-8),里面有希腊字符。当我用下面的代码去获取并打印这个页面时,结果却是乱码,而不是希腊字符。
import urllib2
print urllib2.urlopen("http://www.pamestihima.gr").read()
在Netbeans 6.9.1和Windows 7的命令行中,结果都是一样的。
我好像做错了什么,但到底是什么呢?
2 个回答
3
Unicode并不是UTF-8。UTF-8是一种字符串编码方式,就像ISO-8859-1、ASCII等。
尽快解码你的数据,这样才能把它变成真正的Unicode。比如说,
'somestring in utf8'.decode('utf-8') == u'somestring in utf-8'
,Unicode对象是u''
这种形式,而不是''
。当你的应用程序要发送数据时,一定要编码成正确的格式。对于网页内容,通常使用
utf-8
。对于控制台内容,则要根据你的控制台编码来定。在Windows系统上,默认情况下不是使用UTF-8。
1
我这边也能正常打印出来。
检查一下你查看HTML源代码的程序的字符编码设置。例如,在Linux终端中,你可以找到“设置字符编码”的选项,确保它是UTF-8。