2009-03-08 17 views
32

Po przeczytaniu xml przez InputStream URL, a następnie wyciąć wszystko oprócz adresu URL, otrzymuję "http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-%20Tu%20Bin%20Bataye.mp3".Jak odblokowujesz adresy URL w Javie?

Jak widać, istnieje wiele "% 20".

Chcę, aby adres URL pozostał bez zmian.

Czy można to zrobić w Javie, bez korzystania z biblioteki innej firmy?

+0

Po prostu pedantyczny, nie ma czegoś takiego jak "normalny Unicode". UTF8 jest jednym z kilku sposobów reprezentowania tekstu Unicode. Ale nie ma "prawdziwej" kanonicznej reprezentacji. – jalf

+0

Jak Jon i Ng powiedział, to nie ma nic wspólnego z Unicode lub UTF-8. Możesz zmienić tytuł. –

Odpowiedz

54

To nie jest nieodwzorowany kod XML, to jest tekst zakodowany za pomocą adresu URL. Wygląda mi na to, że chcesz użyć następujących ciągów adresu URL.

URLDecoder.decode(url); 

To da ci poprawny tekst. Wynikiem dekodowania tego, co podałeś, jest to.

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

% 20 jest znakiem spacji. Aby uzyskać powyższe, użyłem obiektu URLDecoder.

+42

Ta metoda jest przestarzała. Użyj adresu URLDecoder.decode (lokalizacja, "UTF-8"); –

0

Mam problemy przy użyciu tej metody, kiedy mam znaki specjalne jak á, é, í itp My (prawdopodobnie dzika) Domyślam się widechars nie są prawidłowo zakodowane ... no, przynajmniej ja spodziewałem się zobacz sekwencje takie jak %uC2BF zamiast %C2%BF.

Zmieniano: Mój zły, ten post wyjaśnia różnicę między kodowania URL i sekwencje Javascript w: URI encoding in UNICODE for apache httpclient 4