python - 为什么python json模块在同一个文件上产生不同的编码

标签 python json unicode

我正在尝试解析包含一些芬兰字符的 json。一个 goog 的例子是一个叫做 Etelä-Karjala 的地区。当我将 json 作为文件打开然后使用 json.load 加载时,我已经在本地工作了。我为这个区域获得的 unicode 是 u'Etel\xe4-Karjala'。

但是我的下一步是在服务器上做同样的事情,并且 json 存储在我必须从中检索它的某个 url 中。我使用了 json.loads(requests.get(url).text),我为同一区域获得的 unicode 现在是 u'Etel\xc3\xa4-Karjala'。

即使输入文件相同,为什么我会得到这些不同的结果?你能建议一个解决方法或一个好的模式来从一个不会导致这个问题的 url 加载 json 吗?

这是重现问题的示例:

import requests
import json

# Example with loading from request
r = requests.get('http://becs.aalto.fi/~smirnod1/maakunnat.geojson')
geo1 = json.loads(r.text)
test1 = geo1['features'][5]['properties']['text']
# test1 = u'Etel\xc3\xa4-Karjala'

然后,我下载此 json 并尝试将其作为文件打开(这是我在开发应用程序时使用的方法)。

# Example with loading from file
with open('/Users/dmitrysmirnov/Downloads/maakunnat.geojson') as f:
geo2 = json.load(f)
test2 = geo2['features'][5]['properties']['text']
# test2 = u'Etel\xe4-Karjala'

我假设 u'Etel\xe4-Karjala'(或测试 2 的结果)应该是我的目标。或者至少这是不会破坏应用程序的结果。

最佳答案

服务器配置错误。要么告诉它报告文件编码为 UTF-8,要么仅以 ASCII 编码 JSON。

关于python - 为什么python json模块在同一个文件上产生不同的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34452460/

相关文章:

c# - 反转字符串的最佳方法

python - 如何在 tensorflow 2.0 中使用预制的密集层进行训练?

java - 如何返回JSON格式的信息

python - 从 Bash 脚本调用 python 脚本

json - Bash sqlite3 行 |如何转换成JSON格式

java - 如果没有自定义序列化程序,是否可以对这个字符串进行 Jackson 序列化?

python - Python 中的 UTF-32

c# - 如何模拟表单的 unicode 文本输入

python - 带有 Excel 库的机器人框架错误 : "local variable ' my_sheet_index' referenced before assignment"

python - 在python中获取移动宽带调制解调器的MAC地址