2013-07-01 5 views
10

Wenn ich diesen Code zu schreiben, erhalte ich diese als Ausgabe -> Diese ersten: ï» ¿ und dann den anderen LinienErstes Zeichen des Lesens aus der Textdatei: ï »¿

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(); 
} 

Wie kann ich es vermeiden?

+0

Ich denke, es liegt an der Codierung. –

+3

Vielleicht die Stückliste? https://en.wikipedia.org/wiki/Byte_order_mark –

+1

Es ist die [UTF-8 BOM] (https://en.wikipedia.org/wiki/Byte_order_mark). –

Antwort

1

Das Problem könnte in Codierung verwendet werden. versuchen Sie dies:

BufferedReader in = new BufferedReader(new InputStreamReader(
     new FileInputStream("yourfile"), "UTF-8")); 
+0

ich würde es definitiv sagen * ist die Kodierung;) – Joey

+2

habe ich schon ausprobiert. Anstelle von ï »¿wird"? " – Milton90

+0

Es könnte wegen der IDE sein, die Sie verwenden. Manchmal legen sie die Standardcodierung des nativen Betriebssystems fest – Tala

13

Sie sind die Zeichen ï »¿immer in der ersten Zeile, da diese Sequenz die UTF-8 byte order mark (BOM) ist. Wenn eine Textdatei mit einer Stückliste beginnt, wurde sie wahrscheinlich von einem Windows-Programm wie Notepad erstellt.

Ihr Problem zu lösen, wählen wir die Datei explizit als UTF-8, statt, was auch immer Standard-Systemzeichencodierung (US-ASCII, etc.) zu lesen:

BufferedReader in = new BufferedReader(
    new InputStreamReader(
     new FileInputStream("myFile.txt"), 
     "UTF-8")); 

dann in UTF-8, die Bytefolge ï »¿dekodiert zu einem Zeichen, das ist U + FEFF. Dieses Zeichen ist optional - eine legale UTF-8-Datei kann damit beginnen oder nicht. So werden wir das erste Zeichen überspringen nur, wenn es U + FEFF:

in.mark(1); 
if (in.read() != 0xFEFF) 
    in.reset(); 

Und jetzt können Sie mit dem Rest des Codes weiter.

Verwandte Themen