FreeMarkerの文字化け対策

2009/04/01 14:12Update
TAGS: FreeMarker | 日本語 | 文字化け | encoding | utf8 | 文字コード

FreeMarkerで日本語の出力や文字化け対策について学びます。

FreeMarkerについて


FreeMarker - Javaで動作するテンプレートエンジン
テンプレートエンジンfreemarkerでRSSを出力してみる

FreeMarkerを使って日本語のテキストを出力する際に、うまく出力されない(文字化け)場合があります。

本文は、FreeMarkerの文字化け対策について考えたいと思います。

FreeMarkerの文字化け対策 基本



1、まず、何の文字コードを利用するかを決定します
  例えば、UTF-8やShift_JISなど

2、テンプレートファイルを利用したい文字コードで保存します。
  ファイル保存時、必ず1で決定した文字コードで保存しておいてください。

例えば、
mail.ftl
日本語だよ
${user}
<p>あいうえお</p>


3、FreeMarkerのデフォルト文字コードを指定します。
Configuration templateCfg = new Configuration();
templateCfg.setDefaultEncoding("utf-8");    //デフォルト文字コードにutf-8を指定します。

...

Template t = templateCfg.getTemplate("mail.ftl");    //テンプレートを取得します
t.setEncoding("utf-8");        //ここにも同じ文字コードを設定します

...



4、必要に応じて、OutputStreamにも相応しい文字コードを指定します。
Writer out = new BufferedWriter(
    new OutputStreamWriter(new FileOutputStream(htmlFile), "UTF-8"));

HashMap context = new HashMap();
context.put("user", "鈴木 太郎");
t.process(context, out);

これで、英語以外の文字例えば日本語でも正常に出力されると思います。

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments

用户名 (required)

Email (will not be published) (required)

URL

Evaluation