Zuerst müssen Sie wissen, was in der Datei kodiert ist, wie UTF-8 oder UTF-16. Was erzeugt diese Datei am Anfang?
Danach ist es relativ einfach - Sie müssen ein FileInputStream
in einem InputStreamReader
statt nur FileReader
verpackt erstellen. (FileReader
verwendet immer die Standardcodierung für das System.) Geben Sie die Codierung an, die beim Erstellen der InputStreamReader
verwendet werden soll, und wenn Sie die richtige ausgewählt haben, sollte alles funktionieren.
Beachten Sie, dass Sie OpenCSV nicht verwenden müssen, um dies zu überprüfen - Sie könnten einfach den Text der Datei selbst lesen und alles ausdrucken. Ich bin mir nicht sicher, dass ich System.out
vertrauen könnte, um mit Nicht-ASCII-Zeichen umgehen zu können - Sie möchten vielleicht eine andere Art der Zeichenfolgenprüfung finden, wie das Ausdrucken der einzelnen Werte von Zeichen als Ganzzahlen (vorzugsweise in hex) und dann vergleicht man sie mit der charts at unicode.org. Auf der anderen Seite, können Sie die richtige Codierung versuchen und sehen, was mit ...
EDIT starten passiert: Okay, also, wenn Sie mit UTF-8:
CSVReader reader=new CSVReader(
new InputStreamReader(new FileInputStream("d:\\a.csv"), "UTF-8"),
',', '\'', 1);
String[] line;
while ((line = reader.readNext()) != null) {
StringBuilder stb = new StringBuilder(400);
for (int i = 0; i < line.length; i++) {
stb.append(line[i]);
stb.append(";");
}
System.out.println(stb);
}
(Ich hoffe, Sie habe einen try/finally Block, um die Datei in deinem echten Code zu schließen.)