为什么Firefox不会将%20转换为空格('')?
问题描述:
我正在向浏览器发送一个用文件名保存文件的请求。 文件名可能包含空格,所以我用%20
替换所有空格。 Internet Explorer和Chrome将%20
转移回空格,但Firefox不会。为什么? 有没有办法让所有浏览器显示空间?为什么Firefox不会将%20转换为空格('')?
这是我的代码:
String codedName = new String(URLEncoder.encode(name, "UTF-8"));
codedName = codedName.replaceAll("\\+", "%20");
response.setHeader("Content-Disposition", "attachment; filename=\"" + codedName+ "\"");
答
这取决于你如何创建文件名。通常,您可以简单地在标题字段中设置文件名,框架将对其进行正确编码。在你的情况下,你似乎编了两次这个名字。尝试不编码它。
答
您可以使用Javascript来编码网址。
的语法编码的URL在JavaScript是:
encodeURI(uri)
所以,代码如下:(注意空间之间我和测试)
<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)
一个简单的谷歌搜索会透露更多的信息。
你为什么改变encode()的结果? +是URL中空间的常规代码。 – PhiLho 2010-08-25 09:40:08
是的。但是我越来越多地看到使用%20而不是+,这很奇怪。 – 2011-02-28 07:42:18