我有一个问题,我需要有关修复的信息。
我需要发送一条包含以下请求的消息:
{'message': u'data:text/html,\xe9\xe9\xe9<br><br>\xe0\xe0\xe0<br>'}
要将其作为json发送,我使用
json.dumps({'message': u'data:text/html,\xe9\xe9\xe9<br><br>\xe0\xe0\xe0<br>'})
此消息已发送,但在平台上发送消息
ééé
à à Ã
我怎样才能获得ééé和àààà而不是éé和Ã?
答案 0 :(得分:2)
您正在发送完美形成的JSON。默认情况下,Python的json
模块将对非ASCII代码使用JSON \uhhhh
转义,以避免任何传输问题:
>>> print json.dumps({'message': u'data:text/html,\xe9\xe9\xe9<br><br>\xe0\xe0\xe0<br>'})
{"message": "data:text/html,\u00e9\u00e9\u00e9<br><br>\u00e0\u00e0\u00e0<br>"}
接收端是这里的问题,你有一个所谓的Mojibake,一个不正确的数据重新编码。我可以通过编码为UTF-8,然后解码为Latin-1或Windows代码页1252来重现它,例如:
>>> print u'data:text/html,\xe9\xe9\xe9<br><br>\xe0\xe0\xe0<br>'.encode('utf8').decode('latin1')
data:text/html,ééé<br><br>à à à <br>
在Python端没有什么可做的,而是修复了接收端。