なぜ私のコードは乱雑であると表示されているのですか? [閉まっている

StackOverflow https://stackoverflow.com/questions/2887734

質問

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を入手する方法は?

役に立ちましたか?

解決

GoogleはおそらくISO-8859-1にサービスを提供しています。少なくとも、それは彼らがユーザーエージェントの「Appengine-Googleのために私に役立つものです;(+」http://code.google.com/appengine) "(urlfetchが使用する)。コンテンツタイプのヘッダー値は次のとおりです。

text/html; charset=ISO-8859-1

だからあなたは使用します:

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

チェックする場合 result.headers["Content-Type"], 、コードは反対側の変更に適応できます。通常、Charset(この場合はISO-8859-1)をPythonデコードメソッドに直接渡すことができます。

他のヒント

私が見たGoogle.comを入手する方法は?

おそらく、Googleのサイトに絶対URLに変更されていない画像、JavaScript、CSSなどに相対URLを使用しているでしょう。これを確認するには、「HTMLのみ」を提供するブラウザが、提供されていない相対的なアドレスリソースを見つけようとするブラウザとして、ログに404エラー(「ページは見つかりません」)を表示する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top