Shammer's Philosophy

My private adversaria

URLEncodeを行うサンプル

Javaに限った話ではないが、ブラウザでWebサーバへアクセスすると、そのURLにエンコードされた情報が付与されることがある。英数字はそのままであることが多いが、記号とか日本語などの非ASCII文字の場合は、%XX(XXは文字ごとに異なる値)というような形で変換されたものになる。ある一定の規則に従ってこれらは変換されているが、java.net.URLEncoderクラスのencodeメソッドを使用することで、どういった文字列に変換されるのかを確認できる。

public class URLEncodeSample {
    public static void main(String[]args)throws Exception {
        String a = "TestMessage";
        String b = "This is a test message, including space.";
        System.out.println(URLEncoder.encode(a, "UTF-8"));
        System.out.println(URLEncoder.encode(b, "UTF-8");
    }
}

これを実行すると、

  • スペースは+に変換される
  • カンマは%2Cに変換される
  • ピリオドは変換されずそのまま

ということがわかる。HTTPクライアントをJavaで実装する際に、GETメソッドの引数とかに付与するクエリ文字もこれで楽に定義できるだろう。