Thymeleafのテンプレートに日本語を入れると文字化けしてしまう

Spring MVCではViewの動的生成にThymeleafを使うことが多いようです。サンプルでも使用されています。

しかし、このサンプルをいじってて日本語を入れてみたところ見事に文字化けしてしまいました。
解消するにはResolverにエンコーディング指定をしなければなりません。

サンプルで言うとWebConfig.javaの下記のメソッドです。

    @Bean
    public ServletContextTemplateResolver templateResolver() {
        ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".html");
        //NB, selecting HTML5 as the template mode.
        resolver.setTemplateMode("HTML5");
        resolver.setCacheable(false);
        resolver.setCharacterEncoding("UTF-8");
        return resolver;
    }
    @Bean
    public ViewResolver viewResolver() {
        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
        viewResolver.setTemplateEngine(templateEngine());
        viewResolver.setOrder(1);
        viewResolver.setViewNames(new String[]{"*"});
        viewResolver.setCache(false);
        viewResolver.setCharacterEncoding("UTF-8");
        return viewResolver;
    }

この2つのメソッドの最後に

        viewResolver.setCharacterEncoding("UTF-8");

という行を足しています。
これで文字化けが解消しました。

(追記)
Spring Bootのサンプルで同じようなことやってみると文字化け起きないですね。
spring-boot-starter-thymeleafだと標準でUTF-8なんでしょうか?


投稿日

カテゴリー:

投稿者:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください