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でも動かしてみるか。