如何在Java中反转义URL?

vql8enpb  于 2023-02-28  发布在  Java
关注(0)|答案(4)|浏览(226)

当我通过URL的InputStream读取xml,然后删除除URL之外的所有内容时,我得到“http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-%20Tu%20Bin%20Bataye.mp3“。
如您所见,有很多“%20“。
我希望网址是unescape。
有没有办法在Java中做到这一点,而不使用第三方库?

63lcw9qa

63lcw9qa1#

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

URLDecoder.decode(url);

这将给予你正确的文本。解码的结果像你提供的是这样的。

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

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

t9aqgxwy

t9aqgxwy2#

从Java 11开始使用

一个月。

对于Java 7/8/9,请使用URLDecoder.decode(url, "UTF-8")
URLDecoder.decode(String s)Java 5起已弃用
关于所选编码:
注:万维网联盟建议书规定应使用UTF-8。不这样做可能会导致不兼容。

r6l8ljro

r6l8ljro3#

当我有áéí等特殊字符时,我在使用这种方法时遇到了问题。我(可能是疯狂的)猜测是宽字符没有被正确编码......嗯,至少我希望看到%uC2BF而不是%C2%BF这样的序列。
编辑:我的错,这篇文章解释了URL编码和JavaScript转义序列之间的区别:URI encoding in UNICODE for apache httpclient 4

ih99xse1

ih99xse14#

在我的例子中,URL包含转义的html实体,因此apache-commons中的StringEscapeUtils.unescapeHtml4()可以实现这个目的

相关问题