- 締切済み
マシンによって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 です
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- happy_people
- ベストアンサー率30% (25/81)
回答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回出現しています。