JavaでURLをエスケープ解除するにはどうすればよいですか?
-
05-07-2019 - |
質問
URLのInputStreamを介してxmlを読み取り、URL以外のすべてを切り取ると、" http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-%20Tu%20Bin %20Bataye.mp3 "。
ご覧のとおり、多くの"%20"があります。
URLのエスケープを解除したい。
サードパーティのライブラリを使用せずにJavaでこれを行う方法はありますか?
解決
これはエスケープされていないXMLではなく、URLエンコードされたテキストです。 URL文字列に次のものを使用したいようです。
URLDecoder.decode(url);
これにより、正しいテキストが表示されます。指定したものをデコードした結果はこれです。
http://cliveg.bu.edu/people/sganguly/player/ Rang De Basanti - Tu Bin Bataye.mp3
%20はエスケープされたスペース文字です。上記を取得するには、URLDecoderオブジェクトを使用しました。
他のヒント
URLDecoder.decode(String s)
はJava 5以降廃止されました
URLDecoder.decode(String s、String enc)
。
例:
URLDecoder.decode(url, "UTF-8")
使用するエンコードについて:
注: World Wide Web Consortiumの勧告は、 UTF-8 を使用する必要があることを示しています。そうしないと、非互換性が生じる可能性があります。
á
、é
、í のような特殊文字がある場合、このメソッドの使用に問題があります私の(おそらく野生の)推測では、ワイド文字が適切にエンコードされていません...まあ、少なくとも
%C2%BFの代わりに
。%uC2BF
のようなシーケンスが表示されることを期待していました
編集済み:この投稿では、URLエンコードとJavaScriptのエスケープシーケンスの違いについて説明しています。 Apache httpclient 4のUNICODEでのURIエンコーディング