2013-10-29 53 views
5

我正在使用supercsv 2.1.0解析CSV文件,並在其中包含德語單詞。如何在supercsv中使用編碼getHeader

給定的CSV文件在第一行有一個標題。 在這個頭裏有一些變異的元音,如:Ä,ä,Ü,ö等等。 例如: Betrag;Währung;信息

在我的編碼,我試圖讓CSV的標題是這樣的:

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

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

這裏是我的問題與底座陣列。 使用utf8字符集不能正確編碼帶有突變元音的所有標頭。

有沒有辦法如何正確讀取標題?

這是一個僞單元測試:

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

親切的問候, 亞歷

+0

您是否嘗試過使用'「UTF-8」'而不是'「UTF8」'? –

+0

不,「UTF-8」沒有解決問題 –

回答

4

這聽起來像你的文件實際上並未使用UTF-8編碼。

我可以通過使用ISO-8859-1編碼創建CSV文件並運行您的代碼來複制您的場景,它顯示爲W?hrung

如果我然後更新InputStreamReader使用"ISO-8859-1"作爲編碼,那麼它正確地顯示爲Währung

+0

非常感謝。假設文件是​​UTF-8編碼是我的錯,但ist是ISO-8859-1。 –

+0

不用擔心:)不要忘記順便關閉閱讀器(您可以在使用Java 7時使用試用資源)。 –

+0

同樣在這裏...假設utf-8,並且證明該文件被編碼爲ISO-8859-1 –