GAE/JとVelocityを組み合わせて利用する際にUTF-8を適応する際のメモです。

2011.3.12 追記:

外部から参照されている方が多いみたいなので、見やすいように書き換えました。

以下設定方法です。

Eclipse関連

Eclipseのメニューの「ウインドウ」→「設定」→「一般」→「コンテンツ・タイプ」→「テキスト」に「.html」などを追加し、下の「デフォルト・エンコード」に「UTF-8」と入力して再起動。これで生成されるファイルがすべてUTF-8になる。

Velocity関連

・テンプレートを読み込む際に必ずエンコードを指定する。

Template template = Velocity.getTemplate(templateFileName, "UTF-8");

・{project}/war/WEB-INF/velocity.propertiesのエンコード設定を正しく指定する。

# ----------------------------------------------------------------------------
# T E M P L A T E  E N C O D I N G
# ----------------------------------------------------------------------------

input.encoding=UTF-8
output.encoding=UTF-8

GAE関連

・HttpServletResponseに結果をマージする前に必ずエンコードとコンテントタイプを指定する。

resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html; charset=UTF-8");

テンプレートファイル関連

・metaタグで正しくエンコードを指定する。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
関連記事:
Velocityにクラスやインスタンスを渡す

関連性がある記事

Disqusでコメント