当你想在你的代码中找到一个错误时,这很难;当你认为你的代码是不会有错误时,这就更难了。

google chrome-为什么firefox不将%20传输到空间('')?

admin 120℃
我正在向浏览器发送一个保存文件名的请求。 文件名可能包含空格,因此我将所有空格替换为 %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+ "\"");

这取决于如何创建文件名。通常,只需在头字段中设置文件名,框架就会对其进行正确编码。在你的例子中,你似乎把名字编码了两次。尝试不编码。

您可以使用javascript对url进行编码。

用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 chrome-为什么firefox不将%20传输到空间('')?