Почему Firefox не переводит% 20 в пробел ('')? - PullRequest
0 голосов
/ 25 августа 2010

Я отправляю в браузер запрос на сохранение файла с именем файла. Имя файла может содержать пробелы, поэтому я заменяю все пробелы на %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 ]

2 голосов
/ 25 августа 2010

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

0 голосов
/ 25 августа 2010

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

Синтаксис для кодирования URL-адресов в JavaScript:

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раскрыл бы больше информации.

...