Python json.load更改输入的字符串

Python json.load更改输入的字符串,python,json,unicode,Python,Json,Unicode,大家好,我正在开发一个简单的程序,它从json文件中获取数据(通过html表单输入,由flask处理数据),并使用此数据调用API 所以我有一些类似这样的JSON: [{"id": "ßLÙ", "server": "NA"}] 我想将id发送到一个api调用,如以下示例所示: http://apicallnamewhatever+id=ßLÙ 但是,当我使用以下命令将json文件加载到我的app.py中时 ids = json.load(open('../names.json')) js

大家好,我正在开发一个简单的程序,它从json文件中获取数据(通过html表单输入,由flask处理数据),并使用此数据调用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Ô™'

看起来您的
名称.json
是用
的“utf-8”
编码的,但您打开它时使用的是
“windows-1252”
[*]或类似的格式。试一试

json.load(open('names.json', encoding="utf-8"))
您可能还应该对
id
进行URL编码,而不是直接将其与服务器地址连接起来,大致如下:

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

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

您使用的是Python 2还是Python 3?如果是Python 3,那么调用
open()
时您的语言环境设置是什么?您的编码可能是windows-1252<编码>“L”。编码(“utf8”)。解码(“windows-1252”)
-->
“L”™'