モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

JSPの文字化け

今度はなぜかJSPを書かなくちゃいけなくなって、自分の大昔のJava/JSPの知識をアップデートしているところです。


そこでJSP絡みで2件、UTF-8にならずに(ISO-8859-1に)文字化けしてしまうのがあったのでその対応tips。

eclipseJSPのファイルだけ化ける

eclipse文字コード設定は普通

・設定→一般→ワークスペース→テキストファイルのエンコード→その他「UTF-8

UTF-8に設定してあれば全てのファイルのデフォルトをUTF-8に出来ます。


が、なぜかJSPだけは化けちゃう。


もう一つ

・設定→Web→JSPファイル→ファイル作成時:エンコード→「ユニコード(UTF-8)」

という設定もあるのですが、ここは作成時のエンコードにのみ関係しています。


じつは、拡張子でファイルタイプごとの設定が行われるとこに、デフォルトエンコードが「ISO-8859-1」に決め打ちされているため化けてしまうのです。

・設定→一般→コンテンツタイプ→JSP→デフォルトエンコード→「UTF-8

にすれば良いです。


(参考)
eclipse,JSP,文字化け,"UTF-8は、コンテンツ・タイプ(ISO-8859-1)で定義されたエンコードと競合します。それでも設定しますか?" - gnarl,技術メモ
http://d.hatena.ne.jp/gnarl/20090317/1237290886

JSPから渡した文字が化ける

HTMLもJSPも全部UTF-8で書いてるのに、JSPから関数に渡された中身がISO-8859-1に化けてしまっていました。


JSPは実はデフォルトのエンコードは「ISO-8859-1」になっているため、エンコード指定をしないとそれで動いてしまってデータが渡されてしまいます。
なのでJSPの頭で、エンコードを「UTF-8」に指定してやる必要があります。

<%@ page pageEncoding="UTF-8" %>


(参考)
JSPリファレンス(@page:contentType、pageEncoding) http://struts.wasureppoi.com/jsp/05_contentType.html