NetBeans6.1 & Wicket Supportでの日本語文字化け - その2

大事なこと書くの忘れてた〜

ということで本日2度目のエントリー。
こういうときは普通に前回のを編集したほうがいいのかな??

本題。
WicketはPageクラスと対になるhtmlのエンコーディングを設定することが可能です。

こんな感じ

public class HogeApplication extends WebApplication{

    @Override
    protected void init() {
        getMarkupSettings().setDefaultMarkupEncoding("Shift_JIS");
    }

    @Override
    public Class getHomePage() {
        return FooPage.class;
    }
}

なので、通常はhtmlファイルがShift_JISで書かれていた場合、WebApplicationのサブクラスのinitメソッドで上記のように
getMarkupSettings().setDefaultMarkupEncoding("Shift_JIS")とすれば問題なく日本語は表示されるのですが、
ここで1つ注意すべきことがあります。作成されているhtmlファイルがxhtml形式で、且つファイルの先頭に

<?xml version="1.0" encoding="UTF-8"?>

と記述されていた場合はWebApplicationのサブクラスで定義したエンコーディングの設定よりもこちらのほうが優先されてしまいます。前回のエントリーで使用しているWicket SupportのプラグインはこのXML宣言が必ず

<?xml version="1.0" encoding="UTF-8"?>

となっているためinitメソッド内でsetDefaultMarkupEncoding("Shift_JIS")とかsetDefaultMarkupEncoding("windows-31j")とかしても文字化けしちゃいますのでご注意を。

作成するファイルに関して毎回かならずXML宣言を修正するよりも最初からプロジェクトのエンコーディングUTF-8にしておいたほうが間違いはないかなと。

え?そもそもWicket Supportなんて使わねーよって??(´・ω・`)