では早速、症状から見ていきます。
症状
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付き)」は選ばないようにしてください
保存したら、改善されると思います。
コメントを残す