萝小卜与花小生 2021-09-17 12:11 采纳率: 50%
浏览 227
已结题

json.decoder.JSONDecodeError:Unexpected UTF-8 BOM(decode using utf-8-sig)

问题是这样的,
res=requests.post(url,headers=headers,data=data)
print(res.json())
会出现标题中的错误,怎么解决?感谢大佬们

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2021-09-17 12:35
    关注

    返回的内容有bom头,要获取返回的内容,判断有BOM头去掉后再用json.loads加载,不能直接.json获取

    img


    有帮助麻烦点个采纳【本回答右上角】,谢谢~~

    import requests
    import json
    text=requests.post(url,headers=headers,data=data).text
    print(text)#有BOM头
    if text.startswith(u'\ufeff'):#含BOM头要先去掉BOM头
        text = text.encode('utf8')[3:].decode('utf8')
    
    o=json.loads(text)
    print(o)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    萝小卜与花小生 2021-09-17 12:54

    感谢你的回答,我是一个业余爱好者,可能没有表达清楚意思,这个响应应该是有 json 格式的数据的,响应的 json 数据内容截图如下

    img


    可能是数据格式的问题,我想打印出 res.json() 的内容该怎么办呢?

    回复
    CSDN专家-showbo 回复 萝小卜与花小生 2021-09-17 13:05

    BOM头记事本看不到的,需要先获取返回内容后,通过内容去掉bom头再用json.loads加载。除非你确认返回的内容没有bom头才可以用.json()获取json对象

    回复
    CSDN专家-showbo 回复 萝小卜与花小生 2021-09-17 13:06

    你这个错误是因为返回的内容包含了BOM头导致内容无法反序列化为json对象

    回复
    展开全部9条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 9月24日
  • 已采纳回答 9月17日
  • 创建了问题 9月17日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部