Saturday, December 22, 2018

Spring MVC 5 で文字化け対策

Spring MVCを使う機会があったが、
POSTしたリクエストがいつも文字化けする。

Web上を調べると、server.xmlの値を変えないといけないとか
@RequestMappingにproduces = "application/json; charset=UTF-8"を付けろとか
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%>がJSPのヘッダに必要だとかありましたが、
結論としては上記のどれでも無かったです。

私が作成しているプロジェクトの構造ですが、

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "jp.co.jdserve.serviceinfo")

public class AppConfig {

というコンフィギュレーションと

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

というInitializerを使っています。
このInitializerの方に下記のメソッドを追加すると、
全てUTF-8で登録表示できるようになりました。

    /**
     * リクエスト、レスポンス共にUTF8で統一する。
     */
    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        characterEncodingFilter.setForceEncoding(true);
        return new Filter[] {characterEncodingFilter};
    }    

No comments:

Post a Comment