Come si eliminano gli URL in Java?
-
05-07-2019 - |
Domanda
Quando leggo l'xml tramite InputStream di un URL e poi taglio tutto tranne l'URL, ottengo " http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-%20Tu%20Bin % 20Bataye.mp3 " ;.
Come puoi vedere, ci sono molti "% 20".
Voglio che l'URL non sia sottoposto a escape.
Esiste un modo per farlo in Java, senza utilizzare una libreria di terze parti?
Soluzione
Questo non è un XML senza caratteri di escape, questo è un testo con codifica URL. Mi sembra che tu voglia utilizzare quanto segue nelle stringhe URL.
URLDecoder.decode(url);
Questo ti darà il testo corretto. Il risultato della decodifica come quello che hai fornito è questo.
http://cliveg.bu.edu/people/sganguly/player/ Rang De Basanti - Tu Bin Bataye.mp3
% 20 è un carattere di spazio di escape. Per ottenere quanto sopra ho usato l'oggetto URLDecoder.
Altri suggerimenti
URLDecoder.decode (String s)
è stato deprecato da Java 5
Dovresti usare URLDecoder.decode (String s, String enc)
.
Ad esempio:
URLDecoder.decode(url, "UTF-8")
Per quanto riguarda la codifica da usare:
Nota: la Raccomandazione del World Wide Web Consortium afferma che UTF-8 deve essere utilizzato. Non farlo potrebbe introdurre incompatibilità.
Sto riscontrando problemi nell'utilizzo di questo metodo quando ho caratteri speciali come á
, é
, í
, ecc. Mio (probabilmente selvaggio ) immagino che i widechar non vengano codificati correttamente ... beh, almeno mi aspettavo di vedere sequenze come % uC2BF
invece di % C2% BF
.
Modificato: mio cattivo, questo post spiega la differenza tra la codifica URL e le sequenze di escape di JavaScript: Codifica URI in UNICODE per apache httpclient 4