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

1 投票
2 回答
1250 浏览
提问于 2025-04-17 06:07

我有一个网址,这个网址已经被处理过,可以让日本字符在浏览器的地址栏中正常显示。

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 个回答

1

你需要先对数据进行编码,比如说用utf-8格式。然后把这些数据加到网址里。接着在服务器那边,从网址中获取这些数据,再把它解码回来。

谢谢。

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

撰写回答