質問: 0; while((line=br.readLine())!=null){ System.out.println(++count+"行目:"+line); } br.close(); } catch (IOException ex){ ex.printStackTrace(); } } } ``` コマンドプロンプトでtxtファイルを書き出した時に現れた、最初の"?"はどうすればいいのでしょうか? プログラムの書き方の問題? それともtxtファイルの仕様? 文字コードの仕様? ご指導のほどよろしくお願いします。
回答: おそらくBOM(Byte Order Mark)ではないかと思います。 私が観察した限りだと * Windowsのメモ帳 UTF-8で出力するとBOMがつく。(メモ帳はBOMの有無やコードによりエンコーディングを自動判別しているように思えます) * Eclipseのテキストエディタ 普段エンコーディングをUTF-8にしてますが、テキストファイルを作成・出力してもBOMは出力されません。 * javaの文字入力ストリーム(Readerなど) 文字セットにUTF-8と指定した場合にBOMを読み飛ばしてはくれないようです。 自分がやっている対処=> UTF-8のテキストを読み込む際にファイルの先頭1文字だけ特別扱いし、BOM(Unicode='\ufeff')だった場合のみ読み飛ばすように自前で処理しています。このやり方が正しいかは常々疑問ではありました。もっと正しいやりかたがあるのでしょうか・・・