你如何在Java中浏览URL?

时间:2009-03-08 16:46:26

标签: java url-encoding

当我通过URL的InputStream读取xml,然后删除除url之外的所有内容时,我得到“http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-%20Tu%20Bin%20Bataye.mp3”。

如你所见,有很多“%20”。

我希望网址不被转义。

有没有办法在Java中执行此操作,而不使用第三方库?

3 个答案:

答案 0 :(得分:56)

这不是未转义的XML,这是URL编码的文本。在我看来,你想在URL字符串上使用以下内容。

URLDecoder.decode(url);

这将为您提供正确的文字。你提供的解码结果就是这个。

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

%20是一个转义空格字符。为了得到上述内容,我使用了URLDecoder对象。

答案 1 :(得分:5)

自Java 5

以来,

URLDecoder.decode(String s)已被弃用

您应该使用URLDecoder.decode(String s, String enc)

例如:

URLDecoder.decode(url, "UTF-8")

关于要使用的编码:

  

注意:World Wide Web Consortium Recommendation表示应使用 UTF-8 。不这样做可能会引入不相容性。

答案 2 :(得分:0)

当我有áéí等特殊字符时,我在使用此方法时遇到问题。我的(可能是狂野的)猜测是宽字符未正确编码......好吧,至少我期待看到像%uC2BF而不是%C2%BF这样的序列。

编辑:我的不好,这篇文章解释了URL编码和JavaScript的转义序列之间的区别:URI encoding in UNICODE for apache httpclient 4