如何使用json.dumps发送utf-8

时间:2016-02-16 07:19:35

标签: python json utf-8

我有一个问题,我需要有关修复的信息。

我需要发送一条包含以下请求的消息:

{'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>'})

此消息已发送,但在平台上发送消息

ééé

à à à 

我怎样才能获得ééé和àààà而不是éé和Ã?

1 个答案:

答案 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端没有什么可做的,而是修复了接收端。