java 「日本語」をURLエンコード 2007/08/07
2007/08/08

「日本語」をURLエンコード

import java.io.IOException;
import java.net.URLEncoder;

public class Check_url_encoder_coder {

public static void main(String[] args) throws IOException {

String targert = "日本語";
String[] encs = { "sjis", "utf-8", "euc-jp" };

for (String enc : encs) {
p(URLEncoder.encode(targert, enc));
}

}

static void p(String s) {
System.out.println(s);
}

}


結果:
sjis:%93%FA%96%7B%8C%EA
utf-8:%E6%97%A5%E6%9C%AC%E8%AA%9E
euc-jp:%C6%FC%CB%DC%B8%EC


URLEncoderのエンコード指定はエンコードが何の文字列を変換するのかという指定になります。何かややこしいかな。
java内部での文字列を、encで指定したエンコーディングにしたあと、URLエンコードに出力するという感じですかね。

プログラム内部で、文字列をbyte[]のようにあつかっていれば、byte[]がどのエンコーディングにされているか気にする必要があります。えーと、つまり、内部データのエンコーディングを知りつつ、それを対象のエンコーディングに変換する必要がありますが、javaのStringで扱っていて、読めているのであれば、気にする必要がないということですよね。

参考:
データ変換ツール(BASE64, URLエンコード(URLデコード), HEX(16進ダンプ), MD5, SHA-1変換フォーム)

: