FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

\65279 は不正な文字です というエラーが出た

javacで下記のエラーが出た。

d:\test>javac -encoding utf-8 enc.java
enc.java:1: \65279 は不正な文字です。
?public class enc{
^
エラー 1 個




なんだこりゃと思ったが、原因はUTF-8のBOM(Byte Order Mark)
Windows標準のメモ帳で編集し、UTF-8で保存するとBOMがついてしまう。
このBOMをJavaでは不正な文字として認識してしまって、エラーを返している模様。


バイナリエディタで開いてみるとしっかりとBOMがはいっている。

EF BB BF 70 75 62 6C 69 63 20 63 6C 61 73 73
^^^^^
・ソpublic class




■解決方法
 基本的には、バイナリエディタでBOM部分「EF BB BF」を削除するなり、BOMを除去してくれるようなフリーソフトをダウンロードしてくればいい。
 ただ、ネットに接続したり、勝手にフリーソフトをインストールしたりできない環境の場合もある。
 そういった場合の対処方法。

・メモ帳で、SJISで保存しなおす。
 一番簡単。
 メモ帳で再度開いて、SJISで保存しなおす。
 (ファイル→名前をつけて保存を選択したときの画面で文字コードを選択可能)
 あとは、SJISとしてJavacでコンパイルしてやればいい。
 Javaソースをコンパイルして動かすだけならこれで十分だと思われる。

2010/3/5追記
 SJISでなくても、メモ帳のUnicode(UTF-16LE)で保存しなおし、javac -encoding utf-16 a.java でもOK。

・JavaでBOMを取り除く
 基本的には、何らかのツールを使用するか、SJISで保存しなおしてコンパイルがいいと思うが、どうしてもUTF-8のままBOMを除いてコンパイルしたい場合は、JavaでBOMを取り除いてしまうという手もある。(先頭3バイトをチェックして、BOMならそれを読み飛ばして出力しなおせばOKか?)
 ただ、プログラム組むのは面倒なので、いったんツールを入れられる環境に持っていって削除するなりしたほうが速い気もする。



そういえば、TracLightningの設定ファイルをいじったときもBOMでひっかかった記憶が・・・。
めんどうなことだ。
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

管理者にだけ表示を許可する

検索フォーム
プロフィール

takuan93

Author:takuan93
本ブログの説明書→「ReadMe」

管理者に連絡

カテゴリ
WiX (5)
Ant (1)
フリーエリア
最新記事
カウンター
カレンダー
09 | 2018/10 | 11
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。