服务器给的是字节,字节变文字要按码表(UTF-8 / GBK)翻译。乱码 = 翻译事故,不是抓取事故;抓到的字节永远是对的。
锟斤拷来历(实测):UTF-8 替换符的字节 EF BF BD 被 GBK 码表翻成”锟斤拷”。print("\ufffd\ufffd".encode("utf-8").decode("gbk")) → 锟斤拷。
修法:r.encoding = r.apparent_encoding,或明确指定 r.encoding = "gbk"。r.content 是字节,r.text 是翻译结果。