知らなかった

package study;

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

import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.EncoderException;
import org.apache.commons.codec.net.URLCodec;

public class URLEncodeTest {

	private static final String ENCODING = "Windows-31J";

	public static void main(String[] args)
		throws UnsupportedEncodingException, EncoderException, DecoderException {
		String str = "1234567890";
		String str1 = URLEncoder.encode(str, ENCODING);
		System.out.println(str1);
		System.out.println(URLDecoder.decode(str1, ENCODING));
		URLCodec codec = new URLCodec(ENCODING);
		String str2 = codec.encode(str);
		System.out.println(str2);
		System.out.println(codec.decode(str2));
		System.out.println(URLDecoder.decode(str2, ENCODING));
		System.out.println(codec.decode(str1));
	}
}

の実行結果は

%82%50%82%51%82%52%82%53%82%54%82%55%82%56%82%57%82%58%82%4F
1234567890
%82P%82Q%82R%82S%82T%82U%82V%82W%82X%82O
1234567890
?P?Q?R?S?T?U?V?W?X?O
1234567890

ブラウザのURLエンコードと正確にやり取りできるのはURLCodecの方なんですね。URLDecoderだと、一部の文字がおかしくなってしまうのか。今まで全然知らなかった・・・