Index > Google App Engine for Java (GAE/J)で Groovlet を使ってHTMLを出力する場合の文字化け対策
Wed, December 23, 2009

Google App Engine for Java (GAE/J)で Groovlet を使ってHTMLを出力する場合の文字化け対策

GAE/Jの勉強会に参加することになったので、GAE/J + Groovy (Groovlet)の勉強中。 非常に何もかもが順調にいったのだが、文字化けでちょっとはまったのでメモ。

Groovyのソースコードに直接日本語を書く場合はエンコーディングを指定せよ

コマンドラインから実行する場合は、groovy -c UTF-8 のようにして文字コードを指定すれば よいことがわかっていて、いつもその方法で問題を回避していたのだが、 今回はGAE/J上で動いているGroovy(Groovlet)。ここに直接書いた日本語が文字化けしてしまった。

ローカル環境でテストしたときは化けてはいないから環境変的な何かの設定が Googleのサーバ上とこちらのローカルで異なっているのだろう...と。

Googleで検索したところ回答がありました。
groovyでスクリプトのエンコーディングを指定する

Javaのシステムプロパティ file.encoding をUTF-8にすればよい

文字化けしていないローカルで file.encoding がどんな値になっているか調べるコード。

Test.java

public class Test {
    public static void main(String[] args) {
        System.out.println("file.encoding=" + System.getProperty("file.encoding"));
    }
}

実行してみると...

$ javac Test.java
$ java Test
file.encoding=UTF-8

ということで UTF-8 に設定しておけばよい。問題は、GAE/Jでどうやって設定するのかと。

WEB-INF/appengine-web.xml で指定

以下のような記述を追加してやればOK.

    <system-properties>
        <property name="file.encoding" value="UTF-8"/>
    </system-properties>

これだけで、文字化け直りました。 すばらしい!

 Twitter
follow me on Twitter
 Categories