では早速、症状から見ていきます。

症状

 

Javaを使った開発作業をAtomで開始したときエラーが発生しました。

Atomでは実行画面が文字化けしてしまったので、コマンドプロンプトから実行を試みましたが次の通り。コンパイルが行えません。

(Atomでの文字化け対策はinto-coffeeから行っていました。)

 

 

問題点を整理します

  • コードの先頭で文字化けが発生している(空白などはない)
  • -encoding UTF-8を試してもエラーが出る
  • “\ufeff”という文字が認識されてしまっている

 

今回はこのような症状に対する解決方法を紹介します。

まず、この症状の根本原因となっているBOMの説明をしていきます。

 

BOMとは

 

BOMとは「Byte Order Mark」の頭文字をとったものです。

自身のファイルが”UTF-8″であることを示すために、ファイルの先頭に見えないコードを忍ばせるものです。

windows標準のメモ帳で保存したり、Atom内での編集も設定しない限り、”UTF-8″ファイルは基本的に「BOM有り」で保存されます。

ただ、この「BOM有り」という形式は少し古い形式で、Javaでコンパイルするときにエラーを発生させる原因となることが多いです。

そして厄介なのは目視で確認することができないため、ファイルの誤作動がBOMによるものだと気が付きにくいことにあります。

 

“\ufeffは不正な文字です。”

というエラーメッセージもBOMが引き起こす典型的なエラーのようです。

 

BOMを外して解決する

 

BOM無しにすれば解決します。

BOM無しにするための方法は大きく分けて2通りあります。

 

1. 指定できるエディタを使う

 

「TeraPad」や「サクラエディタ」などのエディタはBOMの有無を指定できるようです。

これらのエディタを使用して、BOM無しで保存すれば解決します。

 

2.メモ帳で保存方法を設定する

 

※僕はこちらの方法で解決しました。

こちらはwindows10以降のユーザーに限られます。

windowsのメモ帳では、機能改善によって、BOMの有無を設定することができるようになりました。

一度、Atomでの編集を止めて、該当ファイルを「メモ帳」で開きます。

そして新規保存を選択(ファイル名を変える必要はありません)し、画面下の文字コード欄から「UTF-8」を選択します。

 

 

※「UTF-8(BOM付き)」は選ばないようにしてください

保存したら、改善されると思います。