プロが教えるわが家の防犯対策術!

西巻と申します。よろしくお願いします。

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
です

A 回答 (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回出現しています。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!