5

ドイツ語を含むCSVファイルを解析するためにsupercsv 2.1.0を使用しています。

指定された CSV ファイルには、最初の行にヘッダーがあります。このヘッダーには、Ä、ä、Ü、ö などの変異母音がいくつかあります。例: Betrag;Währung;Info

私のコーディングでは、次のようにcsvのヘッダーを取得しようとしています:

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

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

これがヘッダー配列に関する私の問題です。変異した母音を含むヘッダーはすべて、utf8 charset を使用して正しくエンコードされていません。

ヘッダーを正しく読み取る方法はありますか?

疑似単体テストは次のとおりです。

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

敬具、アレックス

4

1 に答える 1

5

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

ISO-8859-1 エンコーディングを使用して CSV ファイルを作成し、コードを実行することで、シナリオを再現できますW?hrung

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

于 2013-10-31T12:28:28.123 に答える