Как вы убираете URL в Java? - PullRequest
32 голосов
/ 08 марта 2009

Когда я читаю xml через InputStream URL, а затем вырезаю все, кроме URL, я получаю "http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-%20Tu%20Bin%20Bataye.mp3".

Как видите, существует много "% 20".

Я хочу, чтобы URL был неэкранированным.

Есть ли способ сделать это на Java без использования сторонней библиотеки?

Ответы [ 3 ]

56 голосов
/ 08 марта 2009

Это не неэкранированный XML, это текст в кодировке URL. Похоже, вы хотите использовать следующие строки URL.

URLDecoder.decode(url);

Это даст вам правильный текст. Результат декодирования, как вы предоставили, таков:

http://cliveg.bu.edu/people/sganguly/player/ Rang De Basanti - Tu Bin Bataye.mp3

% 20 является символом пробела. Чтобы получить вышеуказанное, я использовал объект URLDecoder.

5 голосов
/ 27 ноября 2017

URLDecoder.decode(String s) устарело с Java 5

Вы должны использовать URLDecoder.decode(String s, String enc).

Например:

URLDecoder.decode(url, "UTF-8")

Относительно используемой кодировки:

Примечание. В Рекомендации Консорциума World Wide Web указано, что следует использовать UTF-8 . Несоблюдение этого требования может привести к несовместимости.

0 голосов
/ 09 февраля 2011

У меня проблемы с использованием этого метода, когда у меня есть специальные символы, такие как á, é, í и т. Д. Мое (вероятно, дикое) предположение, что широкие символы не кодируются должным образом ... по крайней мере, я ожидал увидеть последовательности вроде %uC2BF вместо %C2%BF.

Отредактировано: мой плохой, этот пост объясняет разницу между кодировкой URL и escape-последовательностями JavaScript: Кодировка URI в UNICODE для apache httpclient 4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...