2009-03-08 13 views
32

URLのInputStreamでxmlを読み取った後、URL以外のすべてを切り捨てると、 "http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-%20Tu%20Bin%20Bataye.mp3"と表示されます。URLをJavaでエスケープするにはどうすればよいですか?

ご覧のとおり、多くの「%20」があります。

URLをエスケープ解除します。

サードパーティライブラリを使用せずにJavaでこれを行う方法はありますか?

+0

ちょうどぺだっているように、「通常のユニコード」はありません。 UTF8は、ユニコードテキストを表現するいくつかの方法の1つです。しかし、正式な正式な表現はありません。 – jalf

+0

Jonとngが言ったように、これはUnicodeやUTF-8とは関係ありません。タイトルを変更することができます。 –

答えて

54

これはエスケープされていないXMLではありません。これはURLエンコードされたテキストです。 URL文字列で次のように使いたいと思うように見えます。

URLDecoder.decode(url); 

これで正しいテキストが表示されます。あなたが提供したようなデコードの結果はこれです。

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

%20はエスケープスペース文字です。上記を取得するために、私はURLDecoderオブジェクトを使用しました。

+42

このメソッドは推奨されていません。 URLDecoder.decode(location、 "UTF-8")を使用します。 –

0

私はáéíなどの特殊文字を持っているとき、私は私の(おそらく野生)推測がwidecharsが適切にエンコードされていないです...よく、少なくとも私が期待していたなど、この方法を使用して問題を抱えています%C2%BFの代わりに%uC2BFのような配列を参照してください。

は編集:私の悪い、このポストは、URLエンコードとJavaScriptのエスケープシーケンスの違いを説明していますURI encoding in UNICODE for apache httpclient 4