SSブログ

groovy.exe は日本語を引数に受け取れないバグがある [groovy]

Windows 7 Professional 64bit 上の Groovy 1.7.6 groovy.exe には日本語を含む引数を与えると文字化けしてしまうバグがある。

F:\TMP>groovy.exe -v
Groovy Version: 1.7.6 JVM: 1.6.0_22

F:\TMP>groovy.exe -e "println args[0]" こんにちは
?±?

例えば、日本語を含むファイルパスをスクリプトの引数に与えたいとすると、文字化けしてしまい正しいパスが渡らない。

幸いなことに回避策があり、groovy.exe ではなく、groovy.bat ならこの問題は生じない。

F:\TMP>groovy.bat -v
Groovy Version: 1.7.6 JVM: 1.6.0_22

F:\TMP>groovy.bat -e "println args[0]" こんにちは
こんにちは

この問題は ITS にも [#GROOVY-3562] groovy cannot read Chinese character in command line parameter properly - jira.codehaus.org と登録されており fixed/closed となっている。しかし、実際には直っていない。 どうやら、groovy.exe はコマンドラインから渡されたストリームを UTF-8 と見なしているようだ。

ちなみに、Windows (少なくとも Windows 7 Pro 64bit では)のコマンドプロンプトで文字コード(コードページ)を変更するには chcp コマンドを使う。 UTF-8 にしたいなら chcp 65001 とする。 chcp を引数なしで実行すると現在のコードページが表示される。

F:\TMP>chcp
現在のコード ページ: 932
ともあれ、結論としては、groovy.bat を使った方が無難だろう。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。