PHPでURLエンコードされた文字列をJavaでURLデコード出来なかった話
PHPで実装された外部の決済システムとの連携を行っている。
サイトリニューアルに伴いテンプレートを修正しているのだけど、新たに検索ボックスを追加することになった。
テンプレートはShift_JISと決められているので、Java側ではShift_JISでエンコードされた文字が渡されると思い、
String decoded = URLDecoder.decode(keyword, "Shift_JIS");
のようなコードを書いたのだけど、どうもデコード出来ない。
検索ボックスに入力した「フルーツ」という文字が、「%83t%83%8B%81%5B%83c」とエンコードされている。ならJavaならどうエンコードされるのかと思って調べると「%83%74%83%8B%81%5B%83%63」となる。
どうやらphpのencodeurl関数だとこんなエンコードをするらしい。
しょうがないのでcommonのURLCodecのお世話になって解決。