Play Framework がデフォルトエンコーディングを指定していた

| コメント(0) | トラックバック(0)

Javaで動くウェブアプリケーションフレームワークであるPlay Framework 1.2.3の上で動いているプログラムを見てちょっといじっていたら、文字コードの扱いに関して、予想と異なる挙動をしていることに気付きました。

そのアプリではJavaのReader/Writerクラスを使う際に文字コードを指定しないでいたので、デフォルトエンコーディングとして、プラットフォームのデフォルト、したがって日本語版WindowsなのでシフトJIS (の、ベンダ定義外字付きのもの。JavaではMS932というラベルがついている) になるはずだ、と思っていました。

ところが、UTF-8の文字列データがきているはずのストリームを、文字コード指定なしにReaderで読んできちんと日本語文字列になっている。あれれどうなってるんだろう。

しばし悩んでしまいましたが、実はPlay起動時にjavaコマンドのオプション指定 -Dfile.encoding=UTF-8 というのが付加されていて、デフォルトエンコーディングが強制的にUTF-8になっていたのでした。

私はPlay Frameworkに詳しくないので、もしかしたらドキュメントのどこかに書いてあって私がそれを見逃していたのかもしれません。が、これはちょっと勘違いしやすそうだなと思いました。

ちなみに、Play 1.2.2のドキュメントには、国際化について、文字コードの問題は面倒くさいのでUTF-8しかサポートしないという意味のことが書かれていました。これはソースファイルや出力HTML等のことをいっているわけですが、このjava起動時の設定もその一環なのかもしれません。

トラックバック(0)

トラックバックURL: http://yanok.net/yanok/mt-tb.cgi/455

コメントする

最近のブログ記事

Jアラート訓練メールで文字化けとのニュース
一昨日のことですが、中国・四国地方から文…
任俠の第3水準漢字
ユーモラス、と言っていいのか分かりません…
ふるさと納税で奥尻島のワインを頂きました
奥尻島は北海道の南西の方に浮かぶ島です。…
電子マネーの優先順位を考える
このブログを電子マネーとクレジットカード…
電子マネーiDの隠れたお得
iDというのはSuicaやEdyのような…

広告