为什么Firefox不会将%20转移到空格('')?

时间:2010-08-25 08:15:34

标签: firefox google-chrome whitespace urlencode

我正在向浏览器发送一个保存文件名文件的请求。 文件名可能包含空格,因此我用%20替换所有空格。 Internet Explorer和Chrome将%20传回空间,但Firefox不支持。为什么? 有没有办法让所有浏览器显示空间?

这是我的代码:

String codedName = new String(URLEncoder.encode(name, "UTF-8")); 
codedName = codedName.replaceAll("\\+", "%20");
response.setHeader("Content-Disposition", "attachment; filename=\"" + codedName+ "\"");

2 个答案:

答案 0 :(得分:2)

这取决于您如何创建文件名。通常,您只需在标题字段中设置文件名,框架就会对其进行正确编码。在您的情况下,您似乎将名称编码两次。尝试不编码。

答案 1 :(得分:0)

您可以使用Javascript对网址进行编码。

JavaScript中编码URL的语法是:

encodeURI(uri)

所以,代码是:(注意 my test 之间的空格。)

<script type="text/javascript">

var uri="my test.html?name=jason&age=25";
document.write(encodeURI(uri)+ "<br />");

</script>

结果是:

my%20test.html?name=jason&age=25

根据您最近的评论“如何使用Java进行操作?”

语法如下:

encode(String s) 

简单的Google搜索会显示更多信息。