###問題
PlayFramework2.5でフィルタークラスを通してリクエストを処理すると、
フォームから受け取った日本語が文字化けしてしまってうまく受け取れません
###発覚経緯
フレームワーク側で用意されているCSRFフィルターを使おうとして問題を発見しました
また、activator newで新しいプロジェクトを作った時に、
予めサンプルとして作られているExampleFilter(リクエストヘッダーに無意味な文字を追加するもの)のみを使用しても同様に文字化けしました
###試したこと
リクエストヘッダーに"Content-type", "charset=utf-8"などと追加してみましたが、解決しませんでした
###ソースコード
######GitHub
GitHubに文字化けが再現できるプロジェクトを置きました
https://github.com/skliber/garbled
######コントローラー
Java
1public class HomeController extends Controller { 2 3 @Inject 4 FormFactory formFactory; 5 6 public Result index() { 7 return ok(index.render(formFactory.form(TestForm.class))); 8 } 9 10 public Result show() { 11 12 // 日本語が文字化けします 13 play.Logger.info(request().body().asFormUrlEncoded().get("name")[0]); 14 15 Form<TestForm> reqData = formFactory.form(TestForm.class).bindFromRequest(); 16 if (reqData.hasErrors()) { 17 return badRequest(); 18 } 19 20 // 日本語が文字化けします 21 play.Logger.info(reqData.get().name); 22 23 return ok(show.render(reqData.get())); 24 } 25 26}
######ビュー
- index.scala.html
Scala
1@(form: Form[models.form.TestForm]) 2 3@main("index") { 4 5@helper.form(action = routes.HomeController.show()) { 6 @helper.inputText(form("name")) 7 @helper.CSRF.formField 8 <input type="submit" value="確認"> 9} 10 11}
- show.scala.html
Scala
1@(form: models.form.TestForm) 2 3@main("show") { 4 5@form.name 6 7}
###補足情報(言語/FW/ツール等のバージョンなど)
言語: Java 8
FW: PlayFramework 2.5
開発環境: Windows
3日ほど粘ってみましたが解決できませんでした
原因がわかる方がおりましたら、ぜひ解決方法を教えて下さい
よろしくお願いします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/09 08:27