You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用requests获取JSON的编码问题:法国省份地形数据字符错误

解决法国省份名称字符编码错误问题

问题出在requests.get().json()的自动编码识别逻辑上——这个方法会优先从响应头提取编码,没有的话就用chardet库自动检测,但目标topojson文件的编码没被正确识别,导致è被解析成了č。

直接修改代码,强制指定响应编码为UTF-8再解析JSON即可:

import pandas as pd
import requests
import json

link_dep = 'https://code.highcharts.com/mapdata/countries/fr/fr-all-all.topo.json'
response = requests.get(link_dep)
# 强制设置UTF-8编码,避免自动识别出错
response.encoding = 'utf-8'
topo = json.loads(response.text)
x = topo['objects']['default']['geometries']
xx = [y for y in x if y['type'] in ['Polygon', 'MultiPolygon']]
df = pd.json_normalize(xx)

运行这段代码后,调用df.loc[26, 'properties.name']就能得到正确的Deux-Sèvres。

原理很简单:目标文件本身是UTF-8编码,但requests自动检测时误判了编码格式,手动指定response.encoding = 'utf-8'可以强制用正确的编码解码响应内容,从源头解决字符乱码问题。

内容的提问来源于stack exchange,提问作者Nicolas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 20:57:33