2013-10-29 7 views
5

Ich verwende Supercsv 2.1.0, um eine CSV-Datei mit deutschen Wörtern zu analysieren.So verwenden Sie Codierung in Supercsv GetHeader

Die angegebene CSV-Datei hat eine Kopfzeile in der ersten Zeile. In diesem Header gibt es einige mutierte Vokale wie: Ä, ä, Ü, ö und so weiter. Zum Beispiel: Betrag; Währung; Info

In meiner Codierung Ich versuche, den Header der csv wie folgt zu erhalten:

ICsvBeanReader inFile = new CsvBeanReader(new InputStreamReader(new FileInputStream(file), "UTF8"), CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE); 

final String[] header = inFile.getHeader(true); 

Hier ist mein Problem mit dem Header-Array. Alle Header mit mutierten Vokalen sind nicht korrekt mit utf8 Zeichensatz codiert.

Gibt es eine Möglichkeit, wie ich den Header richtig lesen kann?

Hier ist ein Pseudo-Unit-Test:

public class TestSuperCSV { 


@Test 
public void test() { 
    String path = "C:\\Umsatz.csv"; 
    File file = new File(path); 

    try { 
     ICsvBeanReader inFile = new CsvBeanReader(new InputStreamReader(
       new FileInputStream(file), "UTF-8"), 
       CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE); 
     final String[] header = inFile.getHeader(true); 
     System.out.println(header[9]); //getting "W?hrung" but needed "Währung" here 


    } catch (UnsupportedEncodingException | FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
} 

Mit freundlichen Grüßen, Alex

+0

Haben Sie versucht, "UTF-8" anstelle von "UTF8" zu verwenden? –

+0

Nein, "UTF-8" behebt das Problem nicht –

Antwort

4

Es klingt wie die Dateien UTF-8-Codierung nicht tatsächlich verwendet wird.

Ich kann Ihr Szenario replizieren, indem Sie die CSV-Datei mit ISO-8859-1-Codierung erstellen und Ihren Code ausführen, und es wird als W?hrung angezeigt.

Wenn ich dann die InputStreamReader aktualisiere, um "ISO-8859-1" als Kodierung zu verwenden, dann erscheint es korrekt als Währung.

+0

Vielen Dank. Es war meine Schuld, wenn man annahm, dass die Datei UTF-8 kodiert war, aber sie war ISO-8859-1. –

+0

Keine Sorge :) Vergessen Sie nicht, den Reader zu schließen (Sie können Try-with-resources verwenden, wenn Sie Java 7 verwenden). –

+0

gleich hier ... angenommen utf-8, und stellt sich heraus, die Datei ist ISO-8859-1 codiert –