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に。
コンパイル言語を使えばこの辺の面倒さはないのか。
コメント
コメントを投稿