【问题标题】:How to send utf-8 with json.dumps如何使用 json.dumps 发送 utf-8
【发布时间】:2016-02-16 07:19:34
【问题描述】:

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

我需要发送一条带有以下请求的消息:

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

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

ééé

à à à 

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

【问题讨论】:

    标签: python json utf-8


    【解决方案1】:

    您正在发送格式完美的 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端无事可做,改为修复接收端。

    【讨论】:

    • 感谢您的回复,如果有一些提示/帮助,我会在 osticket 平台 (osticket.com) 上查看
    猜你喜欢
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多