2009-03-08 35 views
32

Khi tôi đọc xml thông qua InputStream của URL và sau đó cắt mọi thứ ngoại trừ url, tôi nhận được "http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-%20Tu%20Bin%20Bataye.mp3".Làm thế nào để bạn unescape URL trong Java?

Như bạn có thể thấy, có rất nhiều "% 20" s.

Tôi muốn url không bị thoát.

Có cách nào để thực hiện việc này trong Java mà không cần sử dụng thư viện của bên thứ ba không?

+0

Chỉ để trở thành pedantic, không có thứ như "unicode bình thường". UTF8 là một trong nhiều cách để biểu diễn văn bản unicode. Nhưng không có đại diện kinh điển "đúng". – jalf

+0

Như Jon và ng nói, điều này không liên quan gì đến Unicode hoặc UTF-8. Bạn có thể muốn thay đổi tiêu đề. –

Trả lời

54

Đây không phải là XML chưa thoát, đây là văn bản được mã hóa URL. Có vẻ như tôi muốn sử dụng những điều sau đây trên chuỗi URL.

URLDecoder.decode(url); 

Điều này sẽ cung cấp cho bạn văn bản chính xác. Kết quả giải mã như bạn đã cung cấp là điều này.

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

% 20 là ký tự khoảng trắng thoát. Để có được ở trên, tôi đã sử dụng đối tượng URLDecoder.

+42

Phương pháp đó không được chấp nhận. Sử dụng URLDecoder.decode (vị trí, "UTF-8"); –

0

tôi đang gặp vấn đề sử dụng phương pháp này khi tôi có ký tự đặc biệt như á, é, í vv My (có thể là hoang dã) đoán là widechars không được mã hóa đúng cách ... tốt, ít nhất tôi đã mong xem các chuỗi như %uC2BF thay vì %C2%BF.

được sửa đổi: xấu của tôi, bài này giải thích sự khác biệt giữa mã hóa URL và trình tự thoát JavaScript của: URI encoding in UNICODE for apache httpclient 4

Các vấn đề liên quan