Shammer's Philosophy

My private adversaria

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とあって、何が違うんだろ・・・と思っていたけれど・・・
こういうことだったのね。