gpt4 book ai didi

python - 如何在json中将汉字编码为 'gbk',格式化一个url请求参数String?

转载 作者:行者123 更新时间:2023-11-28 17:39:41 24 4
gpt4 key购买 nike

我想将一个字典转储为一个包含一些中文字符的 json 字符串,并用它格式化一个 url 请求参数。

这是我的python代码:

import httplib
import simplejson as json
import urllib

d={
"key":"上海",
"num":1
}

jsonStr = json.dumps(d,encoding='gbk')
url_encode=urllib.quote_plus(jsonStr)

conn = httplib.HTTPConnection("localhost",port=8885)
conn.request("GET","/?json="+url_encode)
res = conn.getresponse()

我对请求字符串的期望是这样的:

GET /?json=%7B%22num%22%3A+1%2C+%22key%22%3A+%22%C9%CF%BA%A3%22%7D
------------
|
V
"%C9%CF%BA%A3" represent "上海" in format of 'gbk' in url.

但我得到的是这个:

GET /?json=%7B%22num%22%3A+1%2C+%22key%22%3A+%22%5Cu6d93%5Cu5a43%5Cu6363%22%7D
------------------------
|
v
%5Cu6d93%5Cu5a43%5Cu6363 is 'some' format of chinese characters "上海"

我还尝试使用 ensure_ascii=False 选项转储 json:

jsonStr = json.dumps(d,ensure_ascii=False,encoding='gbk')

但没有运气。

那么,我怎样才能使它工作呢?谢谢。

最佳答案

您几乎可以通过 ensure_ascii=False 获得它。这有效:

jsonStr = json.dumps(d, encoding='gbk', ensure_ascii=False).encode('gbk')

您需要告诉 json.dumps() 它将读取的字符串是 GBK,并且它不应该尝试对它们进行 ASCII 编码。然后你必须重新指定输出编码,因为 json.dumps() 没有单独的选项。

此解决方案类似于此处的另一个答案:https://stackoverflow.com/a/18337754/4323

这就是你想要的,尽管我应该注意到 URI 的标准似乎说它们应该尽可能使用 UTF-8。有关更多信息,请参见此处:https://stackoverflow.com/a/14001296/4323

关于python - 如何在json中将汉字编码为 'gbk',格式化一个url请求参数String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26270380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com