読者です 読者をやめる 読者になる 読者になる

TomcatでAjaxEditableLabelの文字化け

WicketでAjaxEditableLabelに2バイト文字を入力すると、文字化けが発生してしまいました。
WebApplicationの継承クラスのinitメソッドでは、

getRequestCycleSettings().setResponseRequestEncoding("UTF-8");
getMarkupSettings().setDefaultMarkupEncoding("UTF-8");

の様に設定しているにも関わらず、AjaxEditableLabelで日本語を入力すると、文字化けが発生しちゃうんです。


id:mdgw 師兄に相談してみたところ、

  • AjaxEditableLabelはGETを使ってデータを投げていること
  • Tomcatの初期設定では2バイト文字をGetで投げると文字化けする
  • server.xmlの設定で回避できる

ことを教わりました。(不出来な後輩で恐縮です。ありがとうございます)

ちなみにserver.xmlへ行った設定は下記の通り。


これでAjaxEditableLabelで2バイト文字を入力しても化けなくなりました。
試してないのですが、もしかしたらsetResponseRequestEncodingやsetDefaultMarkupEncodingの設定でこの値も変わるかもしれません。

ちなみに文字化けの再現環境は以下の通りでした。


一番最初のエントリが他人の褌を借りた話になってしまって、しかもこれを教わったのは半年前なんですが、「AjaxEditableLabel 文字化け」ググってみても情報が無かったようなので掲載してみました。
改めまして id:mdgw さんありがとうございます。