题
当我通过URL的InputStream读取xml,然后删除除url之外的所有内容时,我得到“ http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-%20Tu%20Bin %20Bataye.mp3 &QUOT ;.
如您所见,有很多“%20”。
我希望网址不被转义。
有没有办法在Java中执行此操作,而不使用第三方库?
解决方案
这不是未转义的XML,这是URL编码的文本。在我看来,你想在URL字符串上使用以下内容。
URLDecoder.decode(url);
这将为您提供正确的文字。你提供的解码结果就是这个。
http://cliveg.bu.edu/people/sganguly/player/ Rang De Basanti - Tu Bin Bataye.mp3
%20是一个转义空格字符。为了得到上述内容,我使用了URLDecoder对象。
其他提示
自Java 5以来,不推荐使用URLDecoder.decode(String s)
您应该使用 URLDecoder.decode(String s,String enc)
。
例如:
URLDecoder.decode(url, "UTF-8")
关于要使用的编码:
注意:万维网联盟建议声明应使用 UTF-8 。不这样做可能会引入不相容性。
当我有特殊字符,例如á
,é
,í 代码>,等等。我的(可能是狂野的)猜测是宽链接器没有被正确编码...好吧,至少我期待看到像
%uC2BF
这样的序列而不是%C2%BF 代码>
编辑:我的不好,这篇文章解释了URL编码和JavaScript的转义序列之间的区别: UNICODE中的URI编码,用于apache httpclient 4
不隶属于 StackOverflow