2011-11-11 25 views
1

ブラウザのURLアドレスバーに日本語文字を渡すために既にエンコードされている以下のURLがあります。リクエストから日本語の文字を読み込むには?

http://localhost:8000/service/social/acc?auth=true&body=%7B%22site%22%3A%22twitter%22%2C%22account%22%3A% 
22twitter_1%22%2C%22name%22%3A%22%93X%95%DC1%22%7D 

リクエストから値を取得できますが、文字化けしているか、またはガベージテキストです。

リクエストオブジェクトから日本語の文字を読み取るために特別な処理が必要ですか?

答えて

3

私はこれを試します。 「店舗」は日本語の「店」を意味します。

>In [1]: from urlparse import * 
> 
>In [2]: url = urlparse('http://localhost:8000/service/social/acc?auth=true&body=%7B%22site%22%3A%22twitter%22%2C%22account%22%3A%22twitter_1%22%2C%22name%22%3A%22%93X%95%DC1%22%7D') 
> 
>In [3]: url 
>Out[3]: ParseResult(scheme='http', netloc='localhost:8000', path='/service/social/acc', params='', query='auth=true&body=%7B%22site%22%3A%22twitter%22%2C%22account%22%3A%22twitter_1%22%2C%22name%22%3A%22%93X%95%DC1%22%7D', fragment='') 
> 
>In [4]: parse_qs(url.query) 
>Out[4]: 
{'auth': ['true'], 
'body': ['{"site":"twitter","account":"twitter_1","name":"\x93X\x95\xdc1"}']} 
> 
>In [5]: name = "\x93X\x95\xdc1" 
> 
>In [5]: print name.decode('shift-jis') 
> 
>店舗1 
1

最初にデータをエンコードする必要があります... utf-8で言うことができます。次に、このデータをURLに追加します。 次に、サーバー側で、URLからデータを取得し、それを元に戻します。

ありがとうございました。

+0

あなたは方法を知っていますか、いくつかのスニペットを教えてください。どうもありがとう。 – eros

関連する問題