Xyzzyで書いたJavaソースがコンパイル不可
Windowsマシンだと、デフォルトでSHIFT_JISが使用される。
自宅だとMacなのでこの文字コードをUTF-8にしたいなぁ・・・と思っていて、
数日前に自分の使っているエディタ(Xyzzy)で設定を変更。
変更方法は、%XYZZY_HOME%\site-lisp\siteinit.lに次の1行を追加し、
xyzzy.wxp を削除して再起動。
(setq *default-fileio-encoding* *encoding-utf8*)
しかし、これをやってからというもの、Javaソースをコンパイルすると以下のようなエラーが出る。
\65279 は不正な文字です。
コンパイルのとき、javac -encoding utf-8 ***.java としているのにダメ・・・
一体何が原因だと思って調べてみると、どうやらBOMとかいうものが原因のようだった。
BOM(Byte Order Mark)
http://www.atmarkit.co.jp/aig/01xml/bom.html
UTF-8には、これがつくものとつかないものがあるらしい。どうやら、Windowsの場合は
大抵これがついてしまうようだ。そして、javac コマンドで指定するutf-8は、BOMなしが
想定されているようで、上記設定で保存したファイルはすべておかしくなるようだ。
(Javaだけでなく、XYZZY Lispのコンパイルもおかしくなった)
これを避けるためには、siteinit.lの内容は以下のようにすべきだった。
(setq *default-fileio-encoding* *encoding-utf8n*)
UTF-8とUTF-8Nとあって、何が違うんだろ・・・と思っていたけれど・・・
こういうことだったのね。