Вопрос

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

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

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

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

Это было полезно?

Решение

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

URLDecoder.decode(url);

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

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

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

Другие советы

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

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

Например:

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

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

  

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

У меня проблемы с использованием этого метода, когда у меня есть специальные символы, такие как & # 225; , & # 233; , & # 237; и т. д. Мое (вероятно, дикое) предположение, что widechars не кодируются должным образом ... ну, по крайней мере, я ожидал увидеть последовательности вроде % uC2BF вместо % C2% BF .

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top