2010-08-25 94 views
0

我正在向瀏覽器發送一個用文件名保存文件的請求。 文件名可能包含空格,所以我用%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+ "\""); 
+1

你爲什麼改變encode()的結果? +是URL中空間的常規代碼。 – PhiLho 2010-08-25 09:40:08

+0

是的。但是我越來越多地看到使用%20而不是+,這很奇怪。 – 2011-02-28 07:42:18

回答

2

這取決於你如何創建文件名。通常,您可以簡單地在標題字段中設置文件名,框架將對其進行正確編碼。在你的情況下,你似乎編了兩次這個名字。嘗試不編碼它。

0

您可以使用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) 

一個簡單的谷歌搜索會透露更多的信息。

相關問題