Hallo Leute,
vorab: Ich möchte nichts weiter tun als eine .csv Datei einzulesen, die Daten zu konvertieren und in eine .csv-Datei wieder auszugeben. Hab da aber Probleme mit Sonderzeichen. Insbesondere "µ".
Die Eingagsdatei wird aus Excel exportiert. Hat also als Zeichensatz vermutlich Cp1252.
Ich lese die ein mit org.apache.commons.csv. Mit Angabe der Codierung:
java:
FileInputStream is = new FileInputStream(IN_CSV_FILE_PATH);
Reader in = new InputStreamReader(new BOMInputStream(is), "UTF-8"); //aus Excel als csv-UTF-8 exportiert mit einlesen mit BOM per org.apache.commons.io.input.BOMInputStream
CSVFormat fmt = CSVFormat.EXCEL.withFirstRecordAsHeader().withRecordSeparator(';').withDelimiter(delimiter)
.withQuote('"').withQuoteMode(QuoteMode.NON_NUMERIC); // delimiter ist ";" oder ","
Iterable<CSVRecord> records = fmt.parse(in);
int rows = 0;
for (CSVRecord record : records) {
rows++;
... Hier erfolgt die Konvertierung
... Ausgabe:
wurde folgendermasen definiert:
pwr = new OutputStreamWriter(new FileOutputStream(OUT_CSV_FILE_PATH), "Cp1252");
usw.
In der Eingangsdatei wird das "µ" korrekt angezeigt. Aber irgendwie kann es von Java nicht korrekt eingelesen oder ausgegeben werden.
Meines Wissens wandelt java alles erstmal nach unicode um und dann wieder zurück. Im unicode ist das Zeichen aber def. enthalten.
Ich hab keine Ahnung was ich falsch mache.
Ich hoffe auf eure Hilfe. Und bedanke mich bereits im vorraus.
Gruß
Ratte
ps: Das mit der Code-Definition hab ich nicht verstanden. Also wenn mir da schon mal jemand helfen könnte?
vorab: Ich möchte nichts weiter tun als eine .csv Datei einzulesen, die Daten zu konvertieren und in eine .csv-Datei wieder auszugeben. Hab da aber Probleme mit Sonderzeichen. Insbesondere "µ".
Die Eingagsdatei wird aus Excel exportiert. Hat also als Zeichensatz vermutlich Cp1252.
Ich lese die ein mit org.apache.commons.csv. Mit Angabe der Codierung:
java:
FileInputStream is = new FileInputStream(IN_CSV_FILE_PATH);
Reader in = new InputStreamReader(new BOMInputStream(is), "UTF-8"); //aus Excel als csv-UTF-8 exportiert mit einlesen mit BOM per org.apache.commons.io.input.BOMInputStream
CSVFormat fmt = CSVFormat.EXCEL.withFirstRecordAsHeader().withRecordSeparator(';').withDelimiter(delimiter)
.withQuote('"').withQuoteMode(QuoteMode.NON_NUMERIC); // delimiter ist ";" oder ","
Iterable<CSVRecord> records = fmt.parse(in);
int rows = 0;
for (CSVRecord record : records) {
rows++;
... Hier erfolgt die Konvertierung
... Ausgabe:
wurde folgendermasen definiert:
pwr = new OutputStreamWriter(new FileOutputStream(OUT_CSV_FILE_PATH), "Cp1252");
usw.
In der Eingangsdatei wird das "µ" korrekt angezeigt. Aber irgendwie kann es von Java nicht korrekt eingelesen oder ausgegeben werden.
Meines Wissens wandelt java alles erstmal nach unicode um und dann wieder zurück. Im unicode ist das Zeichen aber def. enthalten.
Ich hab keine Ahnung was ich falsch mache.
Ich hoffe auf eure Hilfe. Und bedanke mich bereits im vorraus.
Gruß
Ratte
ps: Das mit der Code-Definition hab ich nicht verstanden. Also wenn mir da schon mal jemand helfen könnte?