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にしておいたほうが間違いはないかなと。