• 締切済み

マシンによってURLEncoder.encodeの結果が違う

西巻と申します。よろしくお願いします。 JavaServletの開発を行っているのですがソースを コンパイルし、Aのマシンで実行したときと、Bのマシン で実行したときで結果が異なります。 具体的にはAのマシンでの URLEncoder.encode("ほげ")の結果が %82%D9%82%B0 となるのに対してBのマシンでは %3F%8F%AA%E3%3F%A1%EB となります。 原因についておわかりの方ご教授ください。 各マシンは A:Solaris7 B:Solaris2.6 でJDK1.2.2 JServ1.1.1 です

みんなの回答

回答No.1

多分Bがバグってます。<br><br> 私はSolaris使いではないのですが、(同じマシンのWindows上で)同じアプレットがIEとネスケでご質問の症状を起こしたことがあります(要は一方がバグってた)。どっちがどっちだったかは忘れてしまいましたが。。。<br><br> Aが出力した「%82%D9%82%B0」は「ほげ」のShift-JIS表現になっています。Javaソース中の「ほげ」はUnicodeで格納されているのでプログラム内(多分URLEncoder.encode)でShift-JISに変換しているのは理解できるでしょうか。 <br><br> 問題のBですが、先の変換を二重にやってしまっているのではないでしょうか?つまりShift-JISである「%82%D9%82%B0」をUnicodeだと思ってShift-JISに変換を試みた結果、あのような出力になっているのだと思います。状況証拠として「%3F」が2回出現しています。

関連するQ&A