このコードを書くと、これを出力として取得します->これを最初に:ï"¿そして他の行
try {
BufferedReader br = new BufferedReader(new FileReader(
"myFile.txt"));
String line;
while (line = br.readLine() != null) {
System.out.println(line);
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
どうすればそれを回避できますか?
このシーケンスは TF-8バイトオーダーマーク(BOM) であるため、最初の行に文字ï"¿が表示されます。テキストファイルがBOMで始まる場合は、メモ帳などのWindowsプログラムによって生成された可能性があります。
問題を解決するために、デフォルトのシステム文字エンコード(US-ASCIIなど)ではなく、ファイルをUTF-8として明示的に読み取ることを選択します。
BufferedReader in = new BufferedReader(
new InputStreamReader(
new FileInputStream("myFile.txt"),
"UTF-8"));
次に、UTF-8では、バイトシーケンスはU + FEFFである1文字にデコードされます。この文字はオプションです。正規のUTF-8ファイルは、この文字で始まる場合とそうでない場合があります。したがって、U + FEFFの場合にのみ、最初の文字をスキップします。
in.mark(1);
if (in.read() != 0xFEFF)
in.reset();
これで、残りのコードを続行できます。
問題は、使用されるエンコーディングにある可能性があります。これを試して:
BufferedReader in = new BufferedReader(new InputStreamReader(
new FileInputStream("yourfile"), "UTF-8"));