2013-10-29 21 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 –