キッズプログラミング教室ITWORKSのayakaです。
育児の合間を縫ってせっせと記述します。
今回は自身の開発中にHTMLフォームデータの日本語パラメータの文字化けに関しての確認箇所を忘れるのでまとめておきます☺️
そもそもなぜ日本語だけ文字化けしやすいのか
デフォルトの設定ではHTMLフォームデータとして日本語パラメータを送信した場合、URLエンコードされactionで示したメールアドレス・Webサーバのサーブレット等に送信されるからです。
つまり対策してないと日本語パラメータだけデコードが必要という事
日本語対策はフォームデータの送信方法により異なる
- 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リクエストボディに何も記述されません
URLに追加されて送信されるからですね。したがって取得したパラメータに日本語を含む場合はデコードが必要です。