代码之家  ›  专栏  ›  技术社区  ›  neves

python请求:以非utf-8编码提交json

  •  0
  • neves  · 技术社区  · 6 年前

    我必须将数据提交给一个Web服务,该服务使用一个配置为Latin-1的MySQL服务器作为表排序规则。此Web服务接收JSON负载并在数据库中存储一些数据。UTF-8是用于传输的JSON数据的正确编码,但是Web服务没有将其正确编码为Latin-1以保存到数据库中。

    因此,当提交一个json,如“key”:'§',Web服务将其存储在不正确的编码中,并在网页中显示为

    "The value of Key is 'ç'"
    

    我在找一个解决办法。

    我的客户机在python 3.5中,我正在使用 Requests 库,它使用URLLIB3作为管道。当我向请求提交听写时,它使用 json lib将其转换为字符串类型,urllib3将其作为 字节 通过网络发送请求。

    我可以让请求以拉丁-1编码提交我的JSON对象字符串吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sraw    6 年前

    有一种方法,您可以手动发送JSON数据:

    a = {'Key': 'ç'}
    data = json.dumps(a).encode("latin-1")
    requests.post(url, data=data)
    

    然后,您发送的内容是用二进制字符串编码的 latin-1 . 然后您可以从服务器端对其进行解码:

    res.body.decode("latin-1")