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

( ꒪⌓꒪) ゆるよろ日記

( ゚∀゚)o彡°オパーイ!オパーイ! ( ;゚皿゚)ノシΣ フィンギィィーーッ!!!

Liftでフォームから送信した日本語のデータが文字化けする場合の対応

コメントで質問を受けたんですが、Liftでフォームから送信した日本語が文字化けする場合の対応方法について書きます。
どこかに書いたと思っていたら無かったので、自分用のメモもかねて。


結論から言うと、Boot.scalaで、フォームデータのエンコードをHttpServletRequest#setCharacterEncoding(String enc)で指定する必要があります。


こんな感じです。


Boot.scala

class Boot {
  def boot {
   ...省略

   LiftRules.appendEarly(makeUtf8)
  }

  private def makeUtf8(req: HttpServletRequest): Unit = {req.setCharacterEncoding("UTF-8")}
}


LiftRules.appendEarly(makeUtf8)で makeUtf8って関数を登録してます。これで、全てのRequest処理に対してmakeUtf8が適用されて、フォームデータをUTF-8エンコードします。
Lift0.9ではこれで大丈夫でした。1.0でも問題ないでしょう。


。。。最近Liftやってないなぁ。
GAE JavaでLiftでも動かしてみるか。