2010-07-26

MacターミナルでのScalaスクリプト

Scalaを勉強がてら触り始めたが、Scalaをスクリプト言語として動かしたときハマったのメモしておこう。

Scalaスクリプトの中で日本語を使用した場合、ScalaのRuntimeはスクリプトがuft-8でエンコードされていると期待するので、utf-8以外でコードを書いていた場合、UnmappableCharacterExceptionを吐いてエラーになる。

Shift-JISなどでコードを書いていた場合、


foo% scala -encoding Shift-JIS xxxxxx.scala

のようにソースコードのエンコードを指定すればよい。 ハマったのはMacの場合で、上記のような指定をしてWindows上のCygwinで動作するプログラムがMacのターミナルだとうまく動作しない。いろいろ悩んだら、なんのことはないターミナルの言語環境の文字エンコーディングがutf-8になっていた。ところがScalaのRuntimeはMac OS Xの言語環境を取得してShift-JISだと思って文字を出力するからおかしくなっていたのだった。ターミナルの言語環境の文字エンコーディングを「日本語(Mac OS)」で取り合えず Okに。

コンパイル言語を使えばこの辺の面倒さはないのか。

0 件のコメント:

コメントを投稿