http s 接口返回内容中文乱码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问时复制粘贴 AI 生成的内容
unt
V2EX    程序员

http s 接口返回内容中文乱码

  •  
  •   unt 295 天前 1939 次点击
    这是一个创建于 295 天前的主题,其中的信息可能已经有所发展或是发生改变。
    https://tianqi.2345.com/t/wea_history/js/202311/55591_202311.js

    这个资源请求返回的内容中中文字符全是乱码的,但是浏览器端却能正常打开,一般浏览器不会给任何提示,还好大火狐给了,请问火狐之类的浏览器是怎么确定采用哪种编码方式的呢。

    我通过设置返回结果为 buffer 类型,拿到了 hex,我该怎么尝试来探测它的编码规则呢。
    8 条回复    2024-12-21 22:19:37 +08:00
    iikebug
        1
    iikebug  
       295 天前
    默认以 utf8 解码了,你指定一下响应编码类型就好了
    ldyisbest
        2
    ldyisbest  
       295 天前   1
    这段代码正常

    import requests

    headers = {
    'User-Agent': 'Mozilla/5.0'
    }

    resp = requests.get("https://tianqi.2345.com/t/wea_history/js/202311/55591_202311.js", headers=headers)
    print(resp.content.decode('gbk'))

    rekulas
        3
    rekulas  
       295 天前
    这个文件缺少编码指定,你开发默认显示输出一般是 utf 那肯定乱码了
    浏览器应该是缺少编码的时候做了简单的自动识别,所以用了 gbk 编码
    程序上也可以通过识别字符集进行判断
    tsanie
        4
    tsanie  
       295 天前
    先回复问题,hex 的话可以通过 BOM 来推测编码类型。

    火狐的提示已经很清晰了,非 utf-8 编码资源应该在返回头中声明 Content-Type ,火狐会首先检测这个,然后探测 BOM 。

    > The character encoding of the document was not declared, so the encoding was guessed from content. The character encoding needs to be declared in the Content-Type HTTP header or using a byte order mark.
    unt
        5
    unt  
    OP
       295 天前
    @ldyisbest #2 啊,是 GBK 编码?关键是我试过 GBK 转换你知道吧,转出来还是乱码,所以我才困惑。

    可能是我用的工具不对,坑了我。

    3Q
    512357301
        6
    512357301  
    295 天前 via Android
    @unt #5 国内基操了,不是 u8 就是 gb ,而且你说的转换是怎么转呢,理论上得用十六进制的源码转吧,直接转肯定不行
    unt
        7
    unt  
    OP
       295 天前 via iPhone
    @512357301 拿 hex 转的,用的网上的在线转换工具
    zeromake
        8
    zeromake  
       294 天前
    @unt
    是不是 gzip 压缩了……,有的服务器强制开启 gzip 下发,然后有的 http 客户端不会自动解压 gzip
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1376 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 16:52 PVG 00:52 LAX 09:52 JFK 12:52
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86