2010-05-22 54 views
1
class sss(webapp.RequestHandler): 
    def get(self): 
    url = "http://www.google.com/" 
    result = urlfetch.fetch(url)  
    if result.status_code == 200: 
     self.response.out.write(result.content) 

这种观点显示:为什么我的代码显示乱码

alt text http://omploader.org/vNGRybg

当我更改代码这样:

if result.status_code == 200: 
     self.response.out.write(result.content.decode('utf-8').encode('gb2312')) 

它显示:

alt text http://omploader.org/vNGRybw

那么,我该怎么办?

感谢

更新

当我使用这个:

self.response.out.write(result.content.decode('big5')) 

的页面是:

alt text http://omploader.org/vNGRydw

它是不同与我看到google.com

alt text http://omploader.org/vNGRyeA

如何让google.com,我看到?

谢谢

+8

今天还没有去过Google的主页,我很困惑Pacman是如何考虑到这一点的 – 2010-05-22 11:22:37

回答

3

谷歌可能为您提供ISO-8859-1。至少,这是他们为User-Agent“AppEngine-Google;(+ http://code.google.com/appengine)”(urlfetch使用)提供的服务。该Content-Type头值是:

text/html; charset=ISO-8859-1 

,因此会使用:

result.content.decode('ISO-8859-1') 

如果检查result.headers["Content-Type"],你的代码能适应在另一端的变化。通常可以将字符集(本例中为ISO-8859-1)直接传递给Python解码方法。

1

如何获取google.com,我看到了?

它可能使用图像,JavaScript,CSS等相对URL,你没有改变成绝对的URL到谷歌的网站。为了证实这一点:你的日志应该显示404错误(“找不到页面”),因为你所服务的浏览器“只是HTML”试图找到你没有提供的相对地址资源。