[Wicket-ja-user 71] Re: AjaxButtonでsubmitしたFormのencodeについて

Back to archive index

尾崎智仁 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 


Wicket-ja-user メーリングリストの案内
Back to archive index