-
问题描述:
下载链接的响应头如下,可以看到filename是乱码,但是用浏览器下载可以显示正常的文件名。
:
-
原因:
按照RFC规范,HTTP头文件中的字符编码被指定为 ISO-8859-1,中文文件名被用 ISO-8859-1解码后出现乱码也毫不出奇了。
-
解决方法:
把乱码文件名重新用ISO-8859-1编码后,再解码即可(默认用uft-8)。
示例代码:
import requests
import re
r = requests.get(url) # url为下载文件的Request URL
Content_Disposition = r.headers['Content-Disposition']
compiler = re.compile(r'filename=(.*)')
filename = compiler.search(Content_Disposition).group(1) # 正则提取文件名
filename = filename.encode('ISO-8859-1').decode()
print(filename)