【Java】URLエンコーディング

URLエンコーディングJavaで実装するには...

【1】 標準の URLEncoder.encode() を使用する
【2】 Apache Commons CodecのURLCodec を使用する

注意

要件次第でどちらも条件を満たさない可能性がある
詳細は以下の関連記事を参照のこと。
https://blogs.yahoo.co.jp/dk521123/37111087.html

【1】 URLEncoder.encode() を使用する

 * 標準のjava.net.URLEncoder.encode() を使用する
https://docs.oracle.com/javase/jp/8/docs/api/java/net/URLEncoder.html

サンプル

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

public class EncordDemo {

  public static void main(String[] args) {
    try {
      String encodedResult1 = URLEncoder.encode("abcdefghijklmnopqrstuvwxyz", "UTF-8");
      System.out.println("Result: " + encodedResult1);
      String encodedResult2 = URLEncoder.encode("ABCDEFGHIJKLMNOPQRSTUVWXYZ", "UTF-8");
      System.out.println("Result: " + encodedResult2);
      String encodedResult3 = URLEncoder.encode("1234567890", "UTF-8");
      System.out.println("Result: " + encodedResult3);
      String encodedResult4 = URLEncoder.encode("!\"#$%&'()@`{}[]+;*:_/?.,<>~^|\\=- ", "UTF-8");
      System.out.println("Result: " + encodedResult4);
      String encodedResult5 = URLEncoder.encode("The string u@foo-bar", "UTF-8");
      System.out.println("Result: " + encodedResult5);
      String encodedResult6 = URLEncoder.encode("あいうアイウ愛生", "UTF-8");
      System.out.println("Result: " + encodedResult6);
    } catch (UnsupportedEncodingException ex) {
      ex.printStackTrace();
    }
  }
}

出力結果

Result: abcdefghijklmnopqrstuvwxyz
Result: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Result: 1234567890
Result: %21%22%23%24%25%26%27%28%29%40%60%7B%7D%5B%5D%2B%3B*%3A_%2F%3F.%2C%3C%3E%7E%5E%7C%5C%3D-+
Result: The+string+u%40foo-bar
Result: %E3%81%82%E3%81%84%E3%81%86%E3%82%A2%E3%82%A4%E3%82%A6%E6%84%9B%E7%94%9F

【2】 URLEncoder.encode() を使用する

 * Apache Commons Codecのorg.apache.commons.codec.net.URLCodec.encode() を使用する
Download
https://commons.apache.org/proper/commons-codec/download_codec.cgi
API
https://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/net/URLCodec.html

サンプル

commons-codec-1.10.jar をインポートしている
import org.apache.commons.codec.EncoderException;
import org.apache.commons.codec.net.URLCodec;

public class EncordDemo2 {

  public static void main(String[] args) {
    try {
      URLCodec codec = new URLCodec("UTF-8");
      String encodedResult1 = codec.encode("abcdefghijklmnopqrstuvwxyz");
      System.out.println("Result: " + encodedResult1);
      String encodedResult2 = codec.encode("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
      System.out.println("Result: " + encodedResult2);
      String encodedResult3 = codec.encode("1234567890");
      System.out.println("Result: " + encodedResult3);
      String encodedResult4 = codec.encode("!\"#$%&'()@`{}[]+;*:_/?.,<>~^|\\=- ");
      System.out.println("Result: " + encodedResult4);
      String encodedResult5 = codec.encode("The string u@foo-bar");
      System.out.println("Result: " + encodedResult5);
      String encodedResult6 = codec.encode("あいうアイウ愛生");
      System.out.println("Result: " + encodedResult6);
    } catch (EncoderException ex) {
      ex.printStackTrace();
    }
  }
}

出力結果

Result: abcdefghijklmnopqrstuvwxyz
Result: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Result: 1234567890
Result: %21%22%23%24%25%26%27%28%29%40%60%7B%7D%5B%5D%2B%3B*%3A_%2F%3F.%2C%3C%3E%7E%5E%7C%5C%3D-+
Result: The+string+u%40foo-bar
Result: %E3%81%82%E3%81%84%E3%81%86%E3%82%A2%E3%82%A4%E3%82%A6%E6%84%9B%E7%94%9F