2009-03-08 5 views
32

Quando leggo l'xml attraverso l'InputStream di un URL e poi ritagliamo tutto tranne l'url, ottengo "http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-%20Tu%20Bin%20Bataye.mp3".In che modo vengono decifrati gli URL in Java?

Come potete vedere, ci sono molti "% 20" s.

Desidero che l'URL non venga riportato.

C'è un modo per farlo in Java, senza utilizzare una libreria di terze parti?

+0

Giusto per essere pedanti, non esiste un "normale unicode". UTF8 è uno dei vari modi per rappresentare il testo Unicode. Ma non esiste una rappresentazione canonica "vera". – jalf

+0

Come ha detto Jon e ng, questo non ha nulla a che fare con Unicode o UTF-8. Potresti voler cambiare il titolo. –

risposta

54

Questo non è XML senza caratteri escape, questo è testo con codifica URL. Mi sembra che tu voglia utilizzare le seguenti stringhe URL.

URLDecoder.decode(url); 

Questo ti darà il testo corretto. Il risultato della decodifica di ciò che hai fornito è questo.

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

% 20 è un carattere di spazio in escape. Per ottenere quanto sopra ho usato l'oggetto URLDecoder.

+42

Questo metodo è obsoleto. Usa URLDecoder.decode (posizione, "UTF-8"); –

0

sto avendo problemi con questo metodo quando ho i caratteri speciali come á, é, í, ecc mio (probabilmente selvatico) ipotesi è widechars non vengono codificati correttamente ... beh, almeno mi aspettavo di vedere sequenze come %uC2BF anziché %C2%BF.

Modificato: Il mio male, questo post spiega la differenza tra la codifica URL e sequenze di escape di JavaScript: URI encoding in UNICODE for apache httpclient 4

Problemi correlati