Как вы просматриваете URL-адреса в Java?
Когда я читаю xml через URL InputStream, а затем вырезаю все, кроме URL-адреса, я получаю " http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-%20Tu%20Bin%20Bataye.mp3".
Как вы можете видеть, существует много "%20".
Я хочу, чтобы url был unescaped.
Есть ли способ сделать это на Java, не используя стороннюю библиотеку?
Ответы
Ответ 1
Это не unescaped XML, это текст с кодировкой URL. Похоже, вы хотите использовать следующие строки URL.
URLDecoder.decode(url);
Это даст вам правильный текст. Результатом декодирования, который вы предоставили, является это.
http://cliveg.bu.edu/people/sganguly/player/ Rang De Basanti - Tu Bin Bataye.mp3
. %20 - символ экранированного пробела. Чтобы получить выше, я использовал объект URLDecoder.
Ответ 2
У меня возникают проблемы с использованием этого метода, когда у меня есть специальные символы, такие как á
, é
, í
и т.д. Мое (возможно, дикое) предположение - широкоформатные кодировки не кодируются должным образом... ну, на по крайней мере, я ожидал увидеть такие последовательности, как %uC2BF
, а не %C2%BF
.
Отредактировано: My bad, этот пост объясняет разницу между кодировкой URL и escape-последовательностями JavaScript: кодировка URI в UNICODE для apache httpclient 4
Ответ 3
URLDecoder.decode(String s)
устарел, поскольку Java 5
Вы должны использовать URLDecoder.decode(String s, String enc)
.
Что касается используемой кодировки:
Примечание. Рекомендация Консорциума World Wide Web утверждает, что следует использовать UTF-8. Не делать этого может привести к несовместимости.