为什么我的代码显示为杂乱而不是?

时间:2010-05-22 10:34:05

标签: python google-app-engine encode urlfetch

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)

当我将代码更改为:

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

它表现出一些奇怪的东西。我该怎么办?

当我使用它时:

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

该页面与我看到Google.com的页面不同。

如何获得我看到的Google.com?

2 个答案:

答案 0 :(得分:3)

Google可能会为您提供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 :(得分:1)

  

如何获得我看到的google.com?

它可能使用图像,javascript,CSS等的相对URL,您不会将其更改为google网站的绝对URL。要确认这一点:您的日志应显示404错误(“找不到页面”),因为您所服务的浏览器“只是HTML”会尝试查找您未提供的相对地址资源。