URLEncoder

URLEncoder, URLDecoder を使うと簡単にURLエンコーディングができます。URLエンコーディングというのはapplication/x-www-form-urlencoded MIME 形式に変換することで、たとえば、<title>タイトル</title>という文字列をURLエンコーディングすると、%3Ctitle%3E%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%3C%2Ftitle%3Eとなります。

詳細はHTML仕様の17.13.4 Form content typesを参照してください。符号化にあたっては、次の規則に従います。

  1. [a-z][A-Z][0-9]は元のまま残す
  2. [.-*_]は元のまま残す
  3. 空白文字はプラス記号に変換する(‘ ‘→’+’)
  4. ほかのすべての文字はバイト値に変換され、%数値となる(“<“→”%3C”)

Javaでのサンプルプログラムは次のようになります。

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
public class UrlEncoderTest {
public static String createHtmlText() {
String text = “<html><head><title>タイトル</title></head><body>日本語</body></html>”;
return text;
}
public static void main(String[] args) {
String data = “日本語”;
String encoding = “Shift_JIS”;
String src = null;
try {
src = URLEncoder.encode(data, encoding);
String dst = URLDecoder.decode(src, encoding);
System.out.println(“data: “+data);
System.out.println(“src : “+src);
System.out.println(“dst : “+dst);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
data = createHtmlText();
encoding = “UTF-8”;
try {
src = URLEncoder.encode(data, encoding);
String dst = URLDecoder.decode(src, encoding);
System.out.println(“data: “+data);
System.out.println(“src : “+src);
System.out.println(“dst : “+dst);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}

実行結果は次の通り。

data: 日本語
src : %93%FA%96%7B%8C%EA
dst : 日本語
data: <html><head><title>タイトル</title></head><body>日本語</body></html>
src : %3Chtml%3E%3Chead%3E%3Ctitle%3E%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%3C%2Ftitle%3E%3C%2Fhead%3E%3Cbody%3E%E6%97%A5%E6%9C%AC%E8%AA%9E%3C%2Fbody%3E%3C%2Fhtml%3E
dst : <html><head><title>タイトル</title></head><body>日本語</body></html>
同じカテゴリの記事: Java