Saturday, December 30, 2006

Grails Tips : GrailsとSitemeshとマルチバイト文字問題

最近、Grailsを色々な人に説明することが多くなりましたが、
やはり最初に心配するのが、日本語どうよ!?ちゃんと使えるの?
答えは・・・も・・問題ないです。UTF-8なので・・(ジャッカンジシンナクコタエル)
ユーザの環境によっては・・ってのもあるし。

確実にUTF-8を使うためには、
必ずプログラムは文字コード "UTF-8"で作業しましょう。
Jspなどで、MS921(SJIS)等で編集して、
"UTF-8"で表示させる等の方法で開発することが有ると思いますが
(ぇ、無い?・・)
必ず"UTF-8"で開発すれば大抵大丈夫だと思います。
UTF-8で保存しているにも関わらず、文字化けしたよ・・・と言う方。
以下を参照。
Javaランタイムのfile.encodingを"UTF-8"に!
0.4-SNAPSHOTでWindowsの場合:
{GRAILS_HOME}¥bin¥startGrails.bat ファイルの
set JAVA_OPTS=%JAVA_OPTS% -Dgroovy.starter.conf="%STARTER_CONF%"
あたりに、
set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding="UTF-8"
を追加。
Unix系、Mac OSXの場合:
{GRAILS_HOME}/bin/startGrails ファイルの
最初の辺りならどこでも良いので、以下を追加。
JAVA_OPTS="-Dfile.encoding=utf-8"

自分の環境では、この方法で文字化けは一切起きていません。

しかし、文字が最後だけ切れてしまう現象が起きることが有ります。
この問題は、0.3のころJiraにもIssueがあがっていて直っているらしいのですが、
やはり、問題が起きるときがあります。(自分の環境だけかも)
この問題は、Sitemeshを最新版(2.3またはSNAPSHOT版)に入れかえることで解消できます。

Sitemesh問題の詳しい情報は以下のリンク参照
http://jira.opensymphony.com/browse/SIM-157
Multi-byte characters result in page truncation if page is mapped to a decorator that isn't found (eg "none")
起きる現象は全くこの内容通りです。
現在Grailsで使用しているSitemeshのバージョンは、sitemesh-2.2.1です。
一応、最近GrailsのJiraにUpgrade to Sitemesh 2.3が増えていたので近々更新されるでしょう。

なんだか長いこと自分でビルドしたSitemeshを使ってましたが、
いつの間にか、Sitemesh-2.3がリリースになっていたのですね。
以下から入手可能
https://sitemesh.dev.java.net/servlets/ProjectDocumentList?folderID=6239
リリースはしていたけど、発表していなかったとか・・・
http://www.nabble.com/Re%3A-Progress-on-Sitemesh--p7757635.html


一応入れかえ方法
{GRAILS_HOME}/lib/sitemesh-2.2.1.jar を削除。
sitemesh-2.3.jar を {GRAILS_HOME}/lib/ ディレクトリに追加
既存のプロジェクトは、必ず grails clean をしましょう。

Labels: ,

0 Comments:

Post a Comment

<< Home