python下载文件响应header里的'Content-Disposition'的filename为乱码

孜孜求良师 2018-05-07 12:09:53
用python3.6.5的requests库请求一个下载文件,下载后文件名含中文,在谷歌上下,文件名是正常的,响应头里filename也是中文,可是用python,响应头的filename是乱码,求解,以下是源码:
# -*- coding: utf-8 -*-

import requests

url='http://gokifu.com/f/2u4y-围棋gokifu棋谱-20180425-江维杰九段-孙腾宇七段.sgf'
#定义请求头
headers=\
{
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Cookie': 'sc_is_visitor_unique=rx5659732.1525391933.AC91E1FBEDE74F582788C5C99288C700.11.10.9.8.6.2.2.2.1',
'Referer': 'http://gokifu.com/',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'
}

response = requests.get(url,timeout=1000,headers=headers)
content=response.content.decode(encoding='utf-8')# 获取响应报文
print(content)
responseHeaders=response.headers#获取响应头
print(headers)
a = responseHeaders.get('Content-Disposition')
fileName = a[a.find('=') + 1:]#获取filename的值
print(fileName)
filename = fileName.encode().decode('utf-8')#获取响应头的解码内容
print(filename)

...全文
3274 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
孜孜求良师 2018-05-09
  • 打赏
  • 举报
回复
你用谷歌访问这个链接试下,下载的文件的文件名是中文的,如果没有设置请求头参数,响应正文里中文也不能正常显示,但是设置了请求头参数accept-language为:zh-cn,响应正文中文正常显示,响应headerfilename就成了乱码
oyljerry 2018-05-08
  • 打赏
  • 举报
回复

In [2]: res = requests.get('http://gokifu.com/f/2u4y-围棋gokifu棋谱-20180425-江维杰九段-孙腾宇七段.sgf')

In [3]: res.headers
Out[3]: {'Server': 'nginx', 'Date': 'Tue, 08 May 2018 02:54:42 GMT', 'Content-Type': 'application/x-go-sgf', 'Content-Length': '1889', 'Connection': 'keep-alive', 'Content-Description': 'File Transfer', 'Content-Disposition': 'attachment; filename=2u4y-gokifu-20180425-Sun_Tengyu-Jiang_Weijie.sgf', 'Content-Transfer-Encoding': 'binary', 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Pragma': 'public'}

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧