工作,我能够看到正确Chrome中的文件名,但不是在IE获取编码格式的文件名内容处置头字段不是IE的理解,但随着Chrome的
(例如=?UTF-8?B?5qWt55WM5pSv5Ye6UERGXzIwMTUwMjEwMTEwNjIy?=
)。
fileName = "=?UTF-8?B?" + new String(Base64.encodeBase64(fileName.getBytes("UTF-8")), "UTF-8") + "?=";
请帮我解决这个问题。
工作,我能够看到正确Chrome中的文件名,但不是在IE获取编码格式的文件名内容处置头字段不是IE的理解,但随着Chrome的
(例如=?UTF-8?B?5qWt55WM5pSv5Ye6UERGXzIwMTUwMjEwMTEwNjIy?=
)。
fileName = "=?UTF-8?B?" + new String(Base64.encodeBase64(fileName.getBytes("UTF-8")), "UTF-8") + "?=";
请帮我解决这个问题。
对此,没有很好的跨浏览器解决方案。我找到了很好命名的文章Test Cases for HTTP Content-Disposition header field (RFC 6266) and the Encodings defined in RFCs 2047, 2231 and 5987,它总结了不同浏览器支持的内容。虽然我看不到您使用的base64机制上的任何内容。
有许多不同的变体,请尝试使用URL编码形式,请参阅http://greenbytes.de/tech/tc2231/#attwithfn2231utf8。例如
Content-Disposition: attachment; filename*=UTF-8''foo-%c3%a4-%e2%82%ac.html
这要求更好的支持,假设你只想> IE8
FF22 pass
MSIE8 unsupported
MSIE9 pass
Opera pass
Saf6 pass
Konq pass
Chr25 pass
取决于你希望的是什么版本的IE来支持你可能需要做一些肮脏USER_AGENT嗅探和发送头。
if (isUserAgentIe(requestHeaders)) {
fileName = ...
} else {
fileName = ...
}
嗨,亚当,我已经添加了内容处置和stil面临相同的问题 – user3714194 2015-02-10 12:34:47
什么确切版本的Internet Explorer是造成这个问题? – Adam 2015-02-10 12:35:45
嗨,亚当,我试过所有版本的IE和面临同样的问题。 – user3714194 2015-02-11 17:30:37
可能重复的[如何在浏览器的文件下载框中显示非ASCII文件名?](http://stackoverflow.com/questions/149058/how-to-display-a-non- ascii-filename-in-the-file-download-box-in-browsers) – 2015-02-10 06:51:17
嗨,亚当,感谢您的投入。我们尝试过您的选择,但面临同样的问题。 – user3714194 2015-02-10 06:58:42