2013-02-17 9 views
23

Ich habe Probleme beim Lesen von Textdatei mit utf-8-Codierung Ich bin mit Java mit NetBeans 7.2.1 PlattformLesetextdatei mit utf-8-Codierung mit Java

ich bereits das Java-Projekt konfigurierte UTF zu handhaben -8 javaproject ==> rechte Maustaste ==> Eigenschaften ==> Quelle ==> UTF-8

aber immer noch die unbekannte Zeichenausgabe:

der code:

File fileDirs = new File("C:\\file.txt"); 

BufferedReader in = new BufferedReader(
new InputStreamReader(new FileInputStream(fileDirs), "UTF-8")); 

String str; 

while ((str = in.readLine()) != null) { 
    System.out.println(str); 
} 

andere Ideen?

dank

+0

Was ist die Kodierung von 'System.out'? Was ist Ihre Systemkodierung? –

+0

Sind Sie sicher, dass die Eingabedatei UTF-8 codiert ist? – Henry

+3

Vielen Dank für Ihre Kommentare. Ich fand die Lösung für das Problem. Die Textdatei war mit ANSI-Codierung mit arabischem Zeichen. so zu lösen: BufferedReader in = neuer BufferedReader ( neuer InputStreamReader (neuer FileInputStream (fileDirs), "windows-1256")) ;-) danke an alle – Abreal

Antwort

9

Sie lesen die Datei richtig, aber das Problem scheint mit der Standard-Kodierung von System.out zu sein. Versuchen Sie das UTF-8 Saiten-

PrintStream out = new PrintStream(System.out, true, "UTF-8"); 
out.println(str); 
27

Verwenden

import java.io.BufferedReader; 
    import java.io.File; 
    import java.io.FileInputStream; 
    import java.io.IOException; 
    import java.io.InputStreamReader; 
    import java.io.UnsupportedEncodingException;  
    public class test { 
    public static void main(String[] args){ 

    try { 
     File fileDir = new File("PATH_TO_FILE"); 

     BufferedReader in = new BufferedReader(
      new InputStreamReader(new FileInputStream(fileDir), "UTF-8")); 

     String str; 

     while ((str = in.readLine()) != null) { 
      System.out.println(str); 
     } 

       in.close(); 
     } 
     catch (UnsupportedEncodingException e) 
     { 
      System.out.println(e.getMessage()); 
     } 
     catch (IOException e) 
     { 
      System.out.println(e.getMessage()); 
     } 
     catch (Exception e) 
     { 
      System.out.println(e.getMessage()); 
     } 
    } 
} 

Sie drucken müssen UTF-8 in Anführungszeichen setzen

+0

Schlechte Praxis, vor dem Fang in.close einzufügen. Sollte in einem endgültigen Block sein. Kann auch Multi-Catch-Format in Java 8 – tgkprog

7

Sie benötigen die Codierung des Input angeben mit der Zeichensatz Parameter.

Charset inputCharset = Charset.forName("ISO-8859-1"); 
InputStreamReader isr = new InputStreamReader(fis, inputCharset)); 

Das ist Arbeit für mich. ich hoffe Dir zu helfen.

+0

Sie sind der Champion! Danke, Bruder :) –

+0

Lg g3 = arbeite mit utf-8 aber nicht ISO-8859-1, und mein ASUS = arbeitet mit ISO-8859-1 aber nicht in utf-8 ... – delive

0

Ich stieß auf das gleiche Problem jedes Mal, wenn es ein spezielles Zeichen findet, markiert es als . dieses Problem zu lösen, habe ich versucht, die Codierung: ISO-8859-1

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("txtPath"),"ISO-8859-1")); 

while ((line = br.readLine()) != null) { 

} 

Ich hoffe, das jeden, der diesen Beitrag sieht helfen kann.