为了账号安全,请及时绑定邮箱和手机立即绑定

Servlet关于下载时中文名附件的一些问题?

Servlet关于下载时中文名附件的一些问题?

慕盖茨7059572 2019-01-12 16:18:57
Servlet技术在下载中文名称附件的时候都需要对文件名进行重新编码例如以下这种办法:if (agent.contains("MSIE")) {        // IE浏览器         filename = URLEncoder.encode(filename, "utf-8");         filename = filename.replace("+", " "); } else if (agent.contains("Firefox")) {        // 火狐浏览器BASE64Encoder base64Encoder = new BASE64Encoder();         filename = "=?utf-8?B?"                 + base64Encoder.encode(filename.getBytes("utf-8")) + "?="; } else {        // 其它浏览器         filename = URLEncoder.encode(filename, "utf-8");                 } 其中agent就是请求头User-Agent的值 一直这么用,但是有几个问题一直不明白 1.为什么要用URLEncoder.encode(filename, "utf-8");编码成application/x-www-form-urlencoded MIME 格式?我整个web应用环境都是UTF-8,为什么还要用UTF-8进行编码?2.application/x-www-form-urlencoded MIME 格式这个不是客户端向服务器请求的格式么?为什么服务器响应的时候也要用这种格式?3.浏览器到底能解析什么编码呢?我看到使用new String(fileName1.getBytes(“UTF-8”),”ISO8859-1”);这种方法在谷歌,火狐也可以进行中文文件名的解析。没有方法通知浏览器根据某种编码进行解码么?
查看完整描述

1 回答

已采纳
?
pardon110

TA贡献1038条经验 获得超227个赞

在Web的浏览器中,不同的浏览器的编码和解码规则是不一样的.

对于IE浏览器, 编码通常使用application/x-www-form-urlencodedMIME机制.


查看完整回答
反对 回复 2019-01-12
  • 1 回答
  • 0 关注
  • 788 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信