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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top