2017-08-05 28 views
-3

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

+3

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

+0

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

+1

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) –

Antwort

-2

Versuchen Sie folgendes:

Writer writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8"); 
+0

Testen Sie eine Antwort vor dem Posieren und erklären Sie es, wenn Sie es tun. – user1803551

+0

Nun, es hat für mich funktioniert, aber Entschuldigung für fehlende Erklärung. –

+0

Dann einfach [bearbeiten] Sie die Antwort mit einer Erklärung. – user1803551