知らなかった
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だと、一部の文字がおかしくなってしまうのか。今まで全然知らなかった・・・