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

Python解析在线JSON文件时遭遇UnicodeDecodeError错误求助

解决Python解析JSON时的UnicodeDecodeError问题
  • 报错根源:目标URL返回的内容是gzip压缩格式,并非原始UTF-8编码的JSON文本。直接调用decode()按UTF-8解码时,压缩数据的起始字节0x8b不符合UTF-8编码规则,因此触发解码错误。

  • 修正方案一:手动判断并解压压缩内容

import json
import urllib.request
import gzip

with urllib.request.urlopen('https://a.amap.com/Loca/static/loca-v2/demos/mock_data/sz_road_F.json') as url:
    # 从响应头获取编码格式
    content_encoding = url.info().get('Content-Encoding')
    if content_encoding == 'gzip':
        # 解压后解析JSON
        url_data = json.loads(gzip.decompress(url.read()))
    else:
        # 常规UTF-8解码解析
        url_data = json.loads(url.read().decode())
    print(url_data)
  • 修正方案二:让urllib自动处理压缩(更简洁)
import json
import urllib.request

# 创建支持自动解压的opener
opener = urllib.request.build_opener()
opener.addheaders = [('Accept-Encoding', 'gzip, deflate')]
urllib.request.install_opener(opener)

with urllib.request.urlopen('https://a.amap.com/Loca/static/loca-v2/demos/mock_data/sz_road_F.json') as url:
    # 自动完成解压,直接读取解析JSON
    url_data = json.load(url)
    print(url_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 09:20:11