2010-05-22 41 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」試圖找到你沒有提供的相對地址資源。

相關問題