フリーランスのためのネットビジネス専門学校 ネットで独立開業を目指す人を応援
フリーランスのためのネットビジネス専門学校 ネットで独立開業を目指す人を応援

[JavaServlet]日本語パラメータの文字化け時の対応まとめ

キッズプログラミング教室ITWORKSのayakaです。
育児の合間を縫ってせっせと記述します。
今回は自身の開発中にHTMLフォームデータの日本語パラメータの文字化けに関しての確認箇所を忘れるのでまとめておきます☺️

そもそもなぜ日本語だけ文字化けしやすいのか

デフォルトの設定ではHTMLフォームデータとして日本語パラメータを送信した場合、URLエンコードされactionで示したメールアドレス・Webサーバのサーブレット等に送信されるからです。
つまり対策してないと日本語パラメータだけデコードが必要という事:sweat_smile:

日本語対策はフォームデータの送信方法により異なる

  • POST送信の場合

HTMLファイル内で宣言している文字エンコードをHttpServlet.HttpServletRequestのsetCharacterEncodingに指定する。
POST送信の場合送信されるパラメータはHTTPリクエストボディに含まれるためHttpServletRequestの設定で対応可能。

  • GET送信の場合

HTMLファイル内で宣言している文字エンコードでデコードする。

:SampleHttpServlet.java
form_data_in_japanese = request.getParameter("form-name");
URLEncoder.encode(form_data_in_japanese , "文字エンコード");

なんとGET送信の場合はHTTPリクエストボディに何も記述されません:flushed:
URLに追加されて送信されるからですね。したがって取得したパラメータに日本語を含む場合はデコードが必要です。

[紹介元] HTMLタグが付けられた新着投稿 – Qiita [JavaServlet]日本語パラメータの文字化け時の対応まとめ

コメント

記事に戻る

コメントを残す