URLEncoder#encode()のバージョン

JDK1.3までのURLEncoder#encode()は引数1つを取る。
JDK1.4からは引数2つを取る。2つ目の引数はenctypeを指定する。これは考えてみれば当たり前のことで、URLエンコードJavaの内部形式であるStringを渡して、出力されてくるものはバイト列のエンコード表現なわけだからenctypeの適用はふつーだ。そうでなければplatform標準に依存するわけか。
つまり、jdk1.3まではencode()を使うとき、WindowsSolaris上では出てくる結果が違うというわけ(うーん、システムプロパティいじればいいはずなんで、断言は出来ないか)ですが、これが結構困るんですよ。

んで、どうしようかと思って、JDK1.4のURLEncoderのソースをJDK1.3上でコンパイルして URLEncoder14とかいう名前にしてみたら、そのまま使えちゃうんですよ。なんだ、そんなもんか。ささいなことで結構幸せになれました。

ちなみにこんなコードも書いてみたけどさっぱり動かなかった。

String encoded = new String(source.getBytes("Windows-31J"), "iso-8859-1");

ま、そんなもんか。逆のケースは良く使うのにね(笑) (ふるーいWebアプリケーションとかで日本語入力扱うときとか)