wake-up-neo.com

Wie entziehen Sie URLs in Java?

Wenn ich die XML-Datei durch den InputStream einer URL lese und dann alles außer der URL ausschneide, erhalte ich " http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-% 20Tu% 20Bin% 20Bataye.mp3 ".

Wie Sie sehen können, gibt es viele "% 20".

Ich möchte, dass die URL nicht umgangen wird.

Gibt es eine Möglichkeit, dies in Java zu tun, ohne eine Bibliothek eines Drittanbieters zu verwenden?

32
Penchant

Dies ist kein XML-Code, der kein URL enthält, sondern URL-kodierter Text. Sieht aus, als würden Sie die folgenden URL-Zeichenfolgen verwenden.

URLDecoder.decode(url);

Dadurch erhalten Sie den richtigen Text. Das Ergebnis der Dekodierung der von Ihnen angegebenen Art ist dies.

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

% 20 ist ein Leerzeichen mit Escapezeichen. Um das oben genannte zu erhalten, habe ich das URLDecoder-Objekt verwendet.

55
ng.

URLDecoder.decode(String s) wurde seit Java 5 nicht mehr unterstützt

Sie sollten URLDecoder.decode(String s, String enc) verwenden.

Zum Beispiel: 

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

Bezüglich der zu verwendenden Kodierung:

Hinweis: In der Empfehlung World Wide Web Consortium wird angegeben, dass UTF-8 verwendet werden soll. Andernfalls kann es zu Inkompatibilitäten kommen.

5
freedev

Ich habe Probleme mit dieser Methode, wenn ich Sonderzeichen wie á, é, í usw. habe. Meine (wahrscheinlich wilde) Vermutung ist, dass Breitzeichen nicht richtig codiert werden ... Nun, zumindest hatte ich mit Sequenzen wie %uC2BF gerechnet. anstelle von %C2%BF.

Bearbeitet: Mein schlechtes, dieser Beitrag erklärt den Unterschied zwischen URL-Kodierung und Escape-Sequenzen von JavaScript: URI-Kodierung in UNICODE für Apache httpclient 4

0
Mario