GlassFish: ただのHTMLが文字化けするってどういうこと
Windows7(64bit)上で、NetBeans 8.0.2にバンドルされているGlassFish 4.1での話。
[ファイル] -> [新規プロジェクト]で[Java Web]->[Webアプリケーション]を選択します。「名前と場所」はデフォルトのまま、「サーバーと設定」で[GlassFish Server 4.1]を選択し、ごくごくデフォルトのWebアプリケーションを新規作成します。index.htmlファイルが自動で作成されますが、このファイルの
<div>TODO write content</div>
部分だけを日本語にします。もちろんファイルのエンコーディングはUTF-8です。
こんなの、今時文字化けする要因なんて考えられませんが、このプロジェクトを[ビルド]->[実行]すると、ものの見事に文字化けします。
「プロジェクト・プロパティ」ウィンドウで[ソース]の[エンコーディング]も当然UTF-8です。念のため、[コンパイル]の[追加のコンパイラ・オプション]に
-encoding UTF-8
と指定しても効果はありません。
以前のエントリーに書いた WEB-INF/sun-web.xml の設定も関係ありません。
NetBeansから起動されるので、NetBeansのデフォルトエンコーディングが影響しているのでしょうか?
C:\Program Files\NetBeans 8.0.2\etc\netbeans.conf の netbeans_default_options に
-J-Dfile.encoding=UTF-8
を追加してみても効果はありません。
答えは
C:\Program Files\glassfish-4.1\glassfish\domains\domain1\config\domain.xml の
<java-config>ディレクティブに
<jvm-options>-Dfile.encoding=UTF-8</jvm-options>
を追加することです。