尾崎智仁
helme****@gmail*****
2008年 4月 15日 (火) 15:54:07 JST
尾崎です。 言葉足らずですみません・・・。 HTMLをShift_JISで作成し、HTMLのHEAD内で > <meta http-equiv="content-type" content="text/html; charset=sjis"/> > と指定し、Applicationクラスのinitメソッド内で > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > と指定したところ、確かに文字化けすることを確認しました。 上記のとおりです。 もう少し詳細に書くと、 テンプレート・ファイルを文字コードShift_JISで、XHTMLで作成しました。 XML宣言にもencoding="Shift_JIS"を指定しています。 さらに、 getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と指定しています。 この状態だと、ブラウザに出力されるHTMLはShift_JISとなります。 (ブラウザ側もShift_JISで解釈しています。) で、submitを行うと、フォームのデータをutf-8でencodeした POSTデータが、サーバに送信されます。 wicket-ajax.jsの370行目で行われているencodeURIComponent(text);で、 POSTデータはutf-8にされているようです。 (encodeURIComponent でエンコードされたデータは、 クライアントのキャラクタセットにかかわらず、utf-8 になります) しかし、サーバ側ではgetRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と指定しているため、 Wicket側でHttpServletRequest.setCharacterEncoding("Shift_JIS")を設定し、 結果POSTデータをShift_JISとしてエンコードしようとして文字化けとなっていると思われます。 これって、Wicketのバグなんでしょうか? とりあえず、getRequestCycleSettings().setResponseRequestEncoding("utf-8");で 対応しましたが、ちょっと気持ち悪い感じです。 まぁ、いまは全部utf-8で作っとけってことなんですかね。 08/04/15 に Toshihiro Shimizu <shimi****@gmail*****> さんは書きました: > > 清水(meso)です。 > > HTMLをShift_JISで作成し、HTMLのHEAD内で > <meta http-equiv="content-type" content="text/html; charset=sjis"/> > と指定し、Applicationクラスのinitメソッド内で > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > と指定したところ、確かに文字化けすることを確認しました。 > > しかし、そのページのソースをブラウザから表示してみると、 > <meta http-equiv="content-type" content="text/html; charset=sjis"/> > は削除されており、ページのエンコードもUTF-8だと判定されていました。 > > なので、 > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > を > getRequestCycleSettings().setResponseRequestEncoding("UTF-8"); > にすると、文字化けが解消されました。 > > > 「HTMLをShit_JISに」するというのが、ブラウザでのエンコード判定もShit_JISになっていることを意味しているのか分からなかったので、もしかしたら的外れな返答かもしれませんが、よかったら試してみてください。 > > 08/04/14 に 尾崎智仁<ozaki****@yuroy*****> さんは書きました: > > > はじめまして。尾崎と申します。 > > > > HTMLをShift_JISにして、AjaxButtonでsubmitすると、 > > Form内のテキストフィールド内の文字を問答無用でutf-8で > > encodeして送信しているようです。 > > > > > サーバ側では、getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と > > 指定しているため、Shift_JISと解釈して文字化けが発生します。 > > > > どうも、wicket-ajax.jsの370行目で > > return encodeURIComponent(text); > > としている部分が問題のようです。 > > > > このような現象の回避方法を、どなたかご存じないでしょうか? > > (そもそも全部utf-8で作ればいいんですけど・・・。) > > > > > > > _______________________________________________ > > Wicket-ja-user mailing list > > Wicke****@lists***** > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > _______________________________________________ > Wicket-ja-user mailing list > Wicke****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > -------------- next part -------------- HTMLの添付ファイルを保管しました... Télécharger