groovy のソースの文字コードの疑問

昨日、試行錯誤の結果、とりあえず、groovy -c UTF-8 で日本語を含む正規表現もうまく動作することを確認した。
なので、個人的には、ソースは UTF-8 で書けばいいと思っている。

しかし、ここで新たな疑問が。

groovy は -c オプションを使用しない場合、どうやってソースの文字コードを判別しているのだろうか?
JAVA なら、javac.exe が Windows 用なら Windows 用となっていて、プラットフォーム依存なので、javac.exe あたりで文字コードのデフォルトが SJIS(正確にはMS932) になっていたりするのだろうと想像される。

ところが、groovy はそのようなプラットフォーム依存の配布形態にはなっていない。
Windows 用だろうが、Linux 用だろうが、同じ zip ファイルをダウンロードしてくるだけだ。
groovy のインタプリタ自体も JAVA アプリケーションになっている。
なので、文字コードのデフォルトが、何らかのプラットフォームに依存するようなものになっているとは考えにくい。
「Windows だからデフォルトは SJIS で」というような、javac.exe のような気の利いた(あるいは余計なおせっかいのような)ことをやろうにも、そもそも groovy にとっては OS が何であるか関係ないのだ。

最初に何も考えずに SJIS で書いた正規表現がうまく動作したのはなぜ?
UTF-8 を使うときに -c UTF-8 と明示しなければならないのはなぜ?

疑問は疑問なのだが、今の自分にはこれ以上深く追究する余裕はない。
不安なら -c UTF-8 と明示する。今はそれだけだ。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

genzou
2009年08月07日 09:07
コマンドで以下のコマンドを実行すると、

$ groovy -e "println System.properties.'file.encoding'"
> MS932

となりました。
このあたりがみそのようです。
kazuyoshikakihara
2009年08月07日 09:40
なるほど。genzou さん、ありがとうございます。
ものすごく勉強になりました。
恥を覚悟でブログを書き続けていてよかった。

これでものすごく安心して groovy スクリプトを書くことができます。

この記事へのトラックバック