2010-08-25 1 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

+0

Правда. Но все больше и больше я вижу% 20 вместо +, что странно. – 2011-02-28 07:42:18

ответ

2

Это зависит от того, как вы создаете имя файла. Обычно вы можете просто задать имя файла в поле заголовка, и инфраструктура будет правильно кодировать его. В вашем случае вы, кажется, кодируете имя дважды. Попробуйте без кодирования.

0

Вы можете использовать Javascript для кодирования URL.

Синтаксис для кодирования 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) 

Простой поиск Google откроет больше информации.

 Смежные вопросы

  • Нет связанных вопросов^_^