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?
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.
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.
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