url转码 - python解析url参数




我怎样才能从URL参数获得Unicode字符? (2)

我需要使用GET请求通过JavaScript客户端发送JSON到我的服务器,所以我开始回应回应,以确保翻译没有任何损失。 对于正常的文本,似乎没有问题,但只要我包含任何类型的Unicode字符(例如“ç”),字符就会以某种方式编码(例如“\ u00e7”),返回值不同于请求值。 我主要关心的是, A)在我的Python代码中保存了客户端发送到数据库的意图, B)我将相同的值回送给发送的客户端(测试时)。

也许这意味着我不能使用base64,或者必须做一些不同的事情。 我没关系。 我的实施只是一种尝试,以达到目的。

当前步骤(如果需要,可以更改任何步骤):

原始的JSON字符串,我想发送到服务器:

'{"weird-chars": "°ç"}'

通过GET参数传递给服务器的JavaScript Base64编码版本(在附注上,编码字符串末尾的等号会导致任何问题?):

http://www.myserver.com/?json=eyJ3ZWlyZC1jaGFycyI6ICLCsMOnIn0=

Python str从param的b64decode结果:

'{"weird-chars": "\xc2\xb0\xc3\xa7"}'

从解码参数的json.loads的Python dict

{'weird-chars': u'\xb0\xe7'}

从该dict json.dumps (和随后输出到浏览器)的Python str

'{"weird-chars": "\u00b0\u00e7"}'

一切看起来都很好。

>>> hex(ord(u'°'))
'0xb0'
>>> hex(ord(u'ç'))
'0xe7'

也许你应该在尝试使用之前解码JSON。


你的程序很好,你只需要多一步; 也就是说,从unicode到utf-8编码(或任何其他支持“怪异字符”的编码)。

解码当作你从常规字符串转到 unicode和编码的方式 ,就像你 unicode获得的那样。 换一种说法:

你解码str来产生一个unicode字符串

并编码一个unicode字符串来产生一个str

所以:

params = {'weird-chars': u'\xb0\xe7'}

encodedchars = params['weird-chars'].encode('utf-8')

encodedchars将包含您的字符,显示在选定的编码(在这种情况下, utf-8 )。





special-characters