请教下载文件时如何处理文件名编码问题

zj_zwl 2017-02-09 03:14:43
HttpWebResponse响应头里的部分信息为:


请问怎样才能得到正确的文件名?怎么进行转换编码呢?
...全文
292 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zj_zwl 2017-02-09
  • 打赏
  • 举报
回复
引用 7 楼 sp1234 的回复:
你可以假设测试各种情况。例如假设它原来是 unicode 的,并且是 bytes,但是你误以为 gb2312 编码方式解析此 bytes 了。那么你就反向操作。总之是只好瞎猜。 我们编写这类服务端,应该正规地进行 UrlEncode。经过 Encode 之后,这里的文件名就只有ASCII字符,没有特殊字符了。
看来也只能猜猜看了
  • 打赏
  • 举报
回复
你可以假设测试各种情况。例如假设它原来是 unicode 的,并且是 bytes,但是你误以为 gb2312 编码方式解析此 bytes 了。那么你就反向操作。总之是只好瞎猜。 我们编写这类服务端,应该正规地进行 UrlEncode。经过 Encode 之后,这里的文件名就只有ASCII字符,没有特殊字符了。
  • 打赏
  • 举报
回复
引用 3 楼 zj_zwl 的回复:
[quote=引用 1 楼 sp1234 的回复:] filenmame 需要 UrlEncode。
我是从网站下载文件,现在就是从content-disposition里得到的文件名是乱码啊[/quote] 如果服务器端不做正规的 UrlEncode,那就只有瞎猜它的输出(错误转码)过程,才能逆向操作了。
Poopaye 2017-02-09
  • 打赏
  • 举报
回复
引用 4 楼 zj_zwl 的回复:
[quote=引用 2 楼 shingoscar 的回复:]
new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312"));
你这个是对响应体进行解码吧,我目前的问题是下载文件,从content-disposition里得不到正确的文件名[/quote] 不就是response.GetResponseStream()换成content-disposition么
zj_zwl 2017-02-09
  • 打赏
  • 举报
回复
引用 2 楼 shingoscar 的回复:
new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312"));
你这个是对响应体进行解码吧,我目前的问题是下载文件,从content-disposition里得不到正确的文件名
zj_zwl 2017-02-09
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
filenmame 需要 UrlEncode。
我是从网站下载文件,现在就是从content-disposition里得到的文件名是乱码啊
Poopaye 2017-02-09
  • 打赏
  • 举报
回复
new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312"));
  • 打赏
  • 举报
回复
filenmame 需要 UrlEncode。

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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