更换Requests库后,如何通过解码将响应转换为有效图片?
解决方案
方法1:用ast.literal_eval解析转义字符串
如果你的response.text是类似Python字节字面量的格式(包含\xXX转义符,甚至带b'前缀),这个方法能可靠还原原始字节:
import ast # 若response.text前后有多余引号,先去除 clean_content = response.text.strip('"') raw_bytes = ast.literal_eval(clean_content) with open("image.jpg", "wb") as fh: fh.write(raw_bytes)
方法2:正确处理Unicode转义还原字节
如果response.text是原始字节的Unicode转义形式(每个字节被转义为\xXX),用latin-1编码确保字节无损还原:
# 先解码Unicode转义,再用latin-1编码回原始字节 raw_bytes = response.text.encode('utf-8').decode('unicode_escape').encode('latin-1') with open("image.jpg", "wb") as fh: fh.write(raw_bytes)
为什么之前的尝试失效?
你之前的代码response.text.encode().decode('unicode_escape').encode()会先把字符串转成UTF-8字节,解码转义后又转回UTF-8,这会破坏部分单字节二进制数据。而latin-1是单字节编码,能完美映射0-255的所有字节值,不会丢失原始数据。
内容的提问来源于stack exchange,提问作者rdy4sv
相关产品推荐
相关产品推荐

