HttpServletRequestのPOSTパラメータ(日本語)が文字化けする
環境は
tomcat8
Java8
spring4.2
です。
Contoroller側で、POSTリクエストのパラメータを受け取った際、日本語がハングル文字のような状態になります。
viewはファイル自体のエンコードがutf-8で、charsetもutf-8になっています。
server.xmlでも
useBodyEncodingForURI=true
URIEncoding="UTF-8"
となっております。
Springの設定ファイルでもencodingFilterの設定はしています。以下、
WebApplicationInitializerの実装クラスの一部です。
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
characterEncodingFilter.setForceEncoding(true);
FilterRegistration.Dynamic characterEncoding = servletContext.addFilter("characterEncoding", characterEncodingFilter);
characterEncoding.addMappingForUrlPatterns(dispatcherTypes, true, "/");
servletContext.addListener(new ContextLoaderListener(dispatcherContext));
ちなみに文字化けした文字は
「男」→「ç·」
「女」→「女」
です。
ほかに文字コードを設定する場所が思い当たらないので、教えてください。
追記
下記が、コントローラーの呼び出し先メソッドです。
@RequestMapping(value="/regist", method = RequestMethod.POST)
public String regist(@RequestParam("last_name") String lastName,
@RequestParam("first_name") String firstName,
@RequestParam("mail") String email,
@RequestParam("password") String password,
@RequestParam("sexal") String sexal,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
このメソッド内では、DBにユーザー情報を登録する処理を行っております。
文字化けの確認方法は、
1. Eclipseのデバッガを使い、Variablesビューで確認した
2. 登録されたエンティティーをDBサーバーで直接確認した
以上2点でした。