如何在Java中解开URL?从 Java 11 开始使用 URLDecoder.decode(url, StandardCharsets.UTF_8).

2022-09-01 04:16:47

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

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

我希望网址不转义。

有没有办法在Java中做到这一点,而不使用第三方库?


答案 1

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

URLDecoder.decode(url);

这将为您提供正确的文本。解码您提供的类似内容的结果是这样的。

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

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


答案 2

从 Java 11 开始使用

URLDecoder.decode(url, StandardCharsets.UTF_8).

对于 Java 7/8/9,请使用 URLDecoder.decode(url, “UTF-8”)

URLDecoder.decode(String s)Java 5 以来已弃用

关于所选的编码:

注意:万维网联盟建议书指出应使用 UTF-8。如果不这样做,可能会引入不兼容。


推荐