[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends:00138] Re: Tomcat-4.0.6 の <jsp:forward で文字化け



徳@東芝ITソリューションです。
まず、本日Tomcat4.0.6をインストールし、4.1.18でfrom.jspをコンパイルした結果と
比較してみました。

[4.0.6の場合]
(前略)
_jspx_qfStr = _jspx_qfStr + "?buttonName=" +"%8C%8B%89%CA%82%D6";
_jspx_qfStr = _jspx_qfStr + "&value2=" + value2 ;
_jspx_qfStr = _jspx_qfStr + "&value1=" + value1 ;
pageContext.forward("to.jsp" +  _jspx_qfStr);
(後略)

[4.1.18の場合]
(前略)
pageContext.forward("to.jsp" + "?" +
"value1=" + java.net.URLEncoder.encode("" +  value1 ) + "&" +
"value2=" + java.net.URLEncoder.encode("" +  value2 ) + "&" +
"buttonName=" + "%8C%8B%89%CA%82%D6");
(後略)

4.0.6ではPola Xさんのおっしゃる通り、value1、value2とも、そのままですが、
4.1.18では、それぞれapplication/x-www-form-urlencodedにエンコードされています。
(この場合、元のStringについては、プラットフォームデフォルトのShift_JISとしている)
ということで、4.1.18では、受信側が受けたものをURLDecorderでShift_JISとしてデコード
してやればOKだったわけです。

ちなみに
> それと、UTF-8と8859_1はどちらも同じ意味だと思っていたのですが、この2つは別物なのでしょうか?
8859_1(ISO-8859-1)は、ISOLatin Alphabet No.1(又はASCII/Latin-1)のことです。
つまり、フォームデータのデフォルトエンコードapplication/x-www-form-urlencodedのことですね。
URLエンコードする元のStringのエンコードによって、吐き出されるASCIIは違ってきます。
#詳細は、Javadocのjava.nio.Charsetを参照願います。

私の結論としては、まず4.0.6では変数のURLEncodeが行われないので、
使用しないほうが良いかな?ってとこですね。

ちなみに、この辺は実は私は4.1.18でも気にしておらず、Tomcat4.Xから実装された、
フィルター機能を使用しています。
使い方は、/examplesにSetCharacterEncodingFilterと、web.xml内に定義がありますので、
良かったら見てみてください。
(ただ、4.0.6のコンパイル結果を見る限りだと、適用してもNGですね。4.1.18であれば、Pola Xさん
 の最初のjspファイルで問題無く文字化けしませんでした)
では。


//徳 淳@TOSHIBA IT-SOLUTIONS CORPORATION<Toku.Kiyoshi@xxxxxxxxxxxxxxxx>
----- Original Message -----
Subject: [jfriends:00137] Re: Tomcat-4.0.6 の <jsp:forward で文字化け