やりたいこと
Java で、日本語を含む URL を ASCII だけの URL に変換したい場合がある。 例えば、RSS などを読み込んだら RSS に記載された URL が日本語を含んでいたなんてことが良くある。 その 日本語を含む URL に対して単純に URL エンコードをかましてしまうと、コロン(:)やスラッシュなどの URL として正しい記号までエンコードしてしまう。
解決方法
java.net パッケージの URI クラスと、そのクラスのメソッド toASCIIString() を使うと解決できる。 toASCIIString() メソッドで ASCII 文字だけの文字列を返却してくれる。
String url = "http://hogemoge.com/あいうえお/"; url = new URI(url).toASCIIString();
気合いを入れて自分で変換メソッドを作ってしまわないようにしたいところだ。