I'm using supercsv 2.1.0 to parse a CSV File with german words in it.
The given CSV file has a header at the first line. In this header there are some mutated vowels like: Ä,ä, Ü,ö and so on. For example: Betrag;Währung;Info
In my coding I'm trying to get the header of the csv like this:
ICsvBeanReader inFile = new CsvBeanReader(new InputStreamReader(new FileInputStream(file), "UTF8"), CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE);
final String[] header = inFile.getHeader(true);
Here is my problem with the header array. All headers with mutated vowels are not encoded correctly using utf8 charset.
Is there a way how I can read the header correctly?
Here is a 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();
}
}
}
Kind regards, Alex
It sounds like your file isn't actually using UTF-8 encoding.
I can replicate your scenario by creating the CSV file using ISO-8859-1 encoding and running your code, and it appears as W?hrung
.
If I then update the InputStreamReader
to use "ISO-8859-1"
as the encoding, then it appears correctly as Währung
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With