json.load更改输入的字符串

时间:2018-09-29 21:33:41

标签: python json unicode

嗨,我正在研究一个简单的程序,该程序从json文件中获取数据(通过带有处理数据的flask的html表单输入),并使用此数据进行API调用。

所以我有一些这样的JSON:

[{"id": "ßLÙ", "server": "NA"}]

并且我想将ID发送到api调用,例如以下示例:

http://apicallnamewhatever+id=ßLÙ

但是,当我使用以下命令将json文件加载到app.py中时

ids = json.load(open('../names.json'))

json.load似乎将ID从'ßLÙ'更改为'ßLÙ'

我不确定为什么会在json.load中发生这种情况,但是我需要找到一种方法来将'ßLÙ'放入api调用中,而不是变形的'ßLÙ'

1 个答案:

答案 0 :(得分:4)

您的names.json似乎是用"utf-8"编码的,但是您将其打开为"windows-1252" [*] 或类似的名称。试试

json.load(open('names.json', encoding="utf-8"))

,您可能还应该对id进行URL编码,而不是直接将其与该服务器地址连接起来,具体如下:

urllib2.quote(idExtractedFromJson.encode("utf-8")

[*] :感谢@jDo指出这一点,我最初猜错了代码页。