habe ich CSV-Datei in Java und eingefügt einige values.This ist QuelleString uft-8-Unterstützung in Java
try {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate = LocalDate.now();
System.out.println(dtf.format(localDate).toString() + ".csv");
String filename = dtf.format(localDate).toString() + ".csv";
StringBuilder builder = new StringBuilder();
if (Files.exists(Paths.get("D:\\" + filename))) {
System.out.println("File existed");
} else {
System.out.println("File not found!");
String ColumnNamesList = "UID,name,personalNumber,nationality,dateofbirth,dateofexp,documentcode,gender,issueState,documentType";
builder.append(ColumnNamesList + "\n");
}
builder.append(UID + ",");
builder.append(name + ",");
builder.append(personalNumber + ",");
builder.append(nationality + ",");
builder.append(dateofbirth + ",");
builder.append(dateofexp + ",");
builder.append(documentcode + ",");
builder.append(gender + ",");
builder.append(issueState + ",");
builder.append(documentType + ",");
builder.append('\n');
File file = new File("D:\\" + filename);
FileWriter fw = new FileWriter(file, true); // the true will append the new data
fw.write(builder.toString());
fw.close();
System.out.println("done!");
} catch (IOException ioe) {
System.err.println("IOException: " + ioe.getMessage());
}
Problem ist, dass mein „Name“ Wert nicht englischen Alphabets ist und das Ergebnis in meiner Datei Null. Ist es möglich, uft-8 Unterstützung StringBuilder hinzuzufügen? oder wie kann ich einige Werte in der Datei mit uft-8 speichern? dank
See [Wie eine UTF-8-Datei mit Java zu schreiben? ] (https://stackoverflow.com/questions/1001540/how-to-write-a-utf-8-file-with-java) – rossum
Beachten Sie, dass wir heutzutage Javas neue I/O API namens ** NIO verwenden sollten **. Es ist robuster, hat mehr zu bieten und ist leichter zu lesen. Und was für Sie besonders interessant ist, liest und schreibt alles automatisch in ** UTF-8 **, wenn nicht anders angegeben. Die Hauptklassen sind 'Files' und' Paths'. Sie haben sie bereits zum Lesen benutzt, aber Sie sollten sie auch zum Schreiben verwenden **. Bei der alten API muss ** ** ** immer die zu verwendende Kodierung angegeben werden, zum Beispiel 'StandardCharsets.UTF_8', andernfalls wird die Standardcodierung der Plattform verwendet, die oft nicht ** UTF-8 ** ist. – Zabuza
Geben Sie COMPLETE überprüfbaren Code. Ohne 'Name' Erklärung und Initialisierung ist die Antwort unmöglich. Korrekte Verwendung von Java IO hat kein Problem mit der Kodierung (ich schreibe nicht-englische Software ganze Leben) –