Как вы убираете URL в Java?
-
05-07-2019 - |
Вопрос
Когда я читаю 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