Wie schreibt man einen unicode-Wert in eine Datei, die mit java?
Ich versuche zu aktualisieren meine property-Dateien mit java.Ich bin nicht mit java.util.Eigenschaften wie ändert es die Reihenfolge der Schlüssel .
Ich habe meine eigene Logik zu schreiben, die Tasten in Ordnung .
Bin ich mit Datei-IO-lese - /schreib-Eigenschaften.
Das problem, das ich bin vor ist ,wenn ich Schreibe das japanische Zeichenfolgen in die Datei,die ich brauche, um unicode-Wert für die Zeichenfolge geschrieben werden.
Eingang :さん
Erwarteten Wert in der Datei :\u3055\u3093
Wert ist gespeichert :さん
Code:
String strJapanese = "日本語";
try {
FileOutputStream fos = new FileOutputStream("test.utf");
BufferedWriter bufferedWriter = new BufferedWriter(
new OutputStreamWriter(fos,"UTF-8"));
bufferedWriter.write(strJapanese);
bufferedWriter.close();
} catch (Exception e) {
System.out.println(e.toString());
}
Ich habe auch versucht, die Einstellung der Codierung format zu 8859_1 erledigt von Eigenschaften der Klasse.
Die Eigenschaften der Klasse konvertiert automatisch die japaneese-Zeichenfolge in unicode-Zeichen beim speichern von den Dateien.
Jede Hilfe wird geschätzt.
- Nur um zu klären: wollen Sie die Zeichen, die Sie vertreten Java Unicode escape-Sequenzen, um in die Datei geschrieben werden?
- Haben Sie auch versucht
new OutputStreamWriter(fos,"UTF8")
mag das anders sein. - ja, ich möchte die Unicode-escape-Sequenzen, um in die Datei geschrieben werden .Ich möchte diese Werte "\u3055\u3093" geschrieben werden.Statt die japanischen Werte werden immer gespeichert .
- ja, habe ich.Kein Glück!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden org.apache.Unterhaus.lang.StringEscapeUtils#escapeJava(), dass Ihnen Java escaped string.
Wenn Sie möchten, dass die Unicode-escape-Sequenzen geschrieben werden, die Datei anstelle der Zeichen selbst, werden Sie brauchen, um die Konvertierung selbst. Die Verwendung der UTF-8-Codierung ist nicht das richtige Werkzeug (Sie können es verwenden, ohne Schaden, aber es wird nicht helfen). Sie sollten sich auch bewegen, den Aufruf
close()
zu einemfinally
block:Zunächst
*.properties
Dateien müssen verwenden ISO 8859-1-Zeichen-Kodierung. Zitat aus dem javadoc:So dass Sie
new OutputStreamWriter(fos, "8859_1")
.Aber weder
BufferedWriter
nochOutputStreamWriter
entweicht die Charaktere. Dies müssen Sie manuell tun.Dies ist, wie die
Properties
Klasse funktioniert es: im Folgenden ist derProperties.saveConvert()
Methode von Oracle JDK 1.8.0_20:Also im Grunde die folgenden Zeilen in die Datei geschrieben: