2011-01-24 9 views
0

Google検索を実行してクエリの検索結果を取得する必要があります。私はここで答えを見つけました - Google Search from a Python AppUnicodeエラーでGoogle検索APIを呼び出そうとしています

しかし、いくつかのクエリで私は以下のエラーが発生しています。私はクエリがユニコード文字を持っていると思います。

UnicodeDecodeError:「ASCII」コーデックは位置28のバイト0xc3をデコードすることができない。序ない範囲で(128)

Iには、Googleで検索し、私はASCIIにユニコードに変換する必要が発見され、コードの下に発見しました。

def convertToAscii(text, action): 
      temp = unicode(text, "utf-8") 
      fixed = unicodedata.normalize('NFKD', temp).encode('ASCII', action) 
      return fixed 
    except Exception, errorInfo: 
      print errorInfo 
      print "Unable to convert the Unicode characters to xml character entities" 
      raise errorInfo 

私はアクション無視を使用すると、それらの文字を削除しますが、他のアクションを使用すると例外が発生します。

これはどのように処理するのですか?

おかげ

==編集== 私はエンコードして、検索を実行するためのコードの下に使用していますし、これはエラーを投げています。

クエリ= urllib.urlencode({ 'Q':searchfor})

+0

使用しているPythonのバージョンは何ですか? – Turtle

+0

私はpythonを使用しています。2.6.4 – Boolean

答えて

2

未加工のUnicode文字列はurlencodeできません。あなたはまずUTF-8にそれらをエンコードし、それをフィードする必要があります。これは、Googleが喜んで受け入れるq=M%C3%BCnchenを返し

query = urllib.urlencode({'q': u"München".encode('UTF-8')})

0

あなたは安全にASCIIにUnicodeを変換することはできません。そうすることは、情報を捨てることを含む(具体的には、英語以外の文字を捨てる)。

情報を失わないように、プロセス全体をUnicodeで実行する必要があります。

+0

私はquery = urllib.urlencode({'q':searchfor})を使用していますが、これはエラーを投げています。ユニコード自体の検索を実行する方法はありますか? – Boolean