如何从请求中读取日文字符?

时间:2011-11-11 11:11:28

标签: python django unicode request geodjango

我有下面的网址已经编码,可以将日文字符传递到浏览器的网址栏。

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

我可以从请求中获取值,但它是乱码或垃圾文本。

是否需要做一些特殊的事情才能从请求对象中读取日文字符?

2 个答案:

答案 0 :(得分: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 :(得分:1)

您需要先对数据进行编码...比如说utf-8。然后将此数据添加到URL。 然后在服务器端从URL获取数据,然后将其解码回来。

感谢。