2013-10-29 6 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

'' UTF8 ''の代わりに' 'UTF-8''を使ってみましたか? –

+0

いいえ、「UTF-8」は問題を解決しません –

答えて

4

あなたのファイルはUTF-8エンコーディングを使用して、実際にはないようですね。

シナリオを複製するには、ISO-8859-1エンコーディングを使用してコードを実行してCSVファイルを作成し、W?hrungと表示されます。

次に、を更新して"ISO-8859-1"をエンコードとして使用すると、Währungと正しく表示されます。

+0

ありがとうございます。ファイルがUTF-8でエンコードされていると仮定すると私のせいでしたが、istはISO-8859-1でした。 –

+0

心配はいりません:)(Java 7を使用しているように、try-with-resourcesを使用することができます)途中で読者を閉じることを忘れないでください。 –

+0

と同じです... utf-8と仮定し、そのファイルはISO-8859-1でエンコードされています –

関連する問題