wake-up-neo.com

lesen von Textdateien mit UTF-8-Codierung mit Java

Ich habe Probleme beim Lesen von Textdateien mit der UTF-8-Codierung Ich verwende Java mit der Netbeans-7.2.1-Plattform

Das Java-Projekt wurde bereits für die Verarbeitung von UTF-8 konfiguriert Javaproject ==> Rechtsklick ==> Eigenschaften ==> source ==> UTF-8

holen Sie sich trotzdem 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);
}

irgendwelche anderen Ideen?

vielen Dank

25
Abrial

Benutzen 

    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 müssen UTF-8 in Anführungszeichen setzen

32
Shobhit Sharma

Sie lesen die Datei richtig, aber das Problem scheint die Standardcodierung von System.out zu sein. Versuchen Sie dies, um den UTF-8 string- zu drucken. 

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

Sie müssen die Kodierung des InputStreamReader mithilfe des Parameters Charset angeben.

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

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

8
jinkal

Ich bin jedes Mal auf dasselbe Problem gestoßen, wenn ein Sonderzeichen als gekennzeichnet wird. Um dies zu lösen, habe ich versucht, die Kodierung zu verwenden: ISO-8859-1

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

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

}

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

2

Ok, ich bin definitiv zu spät zur Party, aber wenn Sie immer noch nach einer optimalen Lösung suchen, würde ich Folgendes verwenden (für Java 8)

    Charset inputCharset = Charset.forName("ISO-8859-1");
    Path pathToFile = ....
    try (BufferedReader br = Files.newBufferedReader( pathToFile, inputCharset )) {
        ...
     }
0
7dr3am7