\65279 は不正な文字です。 | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

久々に Java のプログラムを作っていて、コンパイル時に以下のようなエラーに遭遇しました。


\65279 は不正な文字です。

大昔に同じエラーを見たことがあるような気がするのですが、すぐには思い出せません。


しかし、ネットで調べてみるとすぐに思い出しました。


Java のソースファイルは UTF-8 でエンコーディングしているのですが、これが BOM 付きの UTF-8 だと上記のエラーが発生するのです。



BOM とは Byte Order Mark の略で、2バイトで表される UTF-16 のエンディアン(上位バイトを先に書くか下位バイトを先に書くか)を識別するために文書の先頭に書き込む制御コードで、UTF-8 では本来必要のないものです。


Eclipse で Java のソースファイルを編集した場合には BOM は付きませんし、秀丸エディタで編集した場合でもBOM はオプション扱いです。



しかし、1つだけ落とし穴がありました。


それは Windws のメモ帳です。


メモ帳で編集するとなぜか勝手に BOM が付いてしまうのです。しかも BOM が付いていないファイルを編集して保存しても BOM が付いてしまうのです。


今回の場合は、たまたま元々あった BOM の付いていない UTF-8 の Java ソースファイルをメモ帳で編集してしまったがために上記のエラーに遭遇してしまったというわけです。



たまにしか Java を使わないので、この手のトラップに何度も引っかかってひまうのが情けないところです。