Von dem, was ich sagen kann, haben Sie entweder das falsche Zeichen, was ich nicht denke, ist der Fall, oder Sie versuchen, es auf einem Terminal anzuzeigen, das das Zeichen nicht behandelt. Ich habe einen kurzen Test geschrieben, um die Probleme zu trennen.
public static void main(String[] args){
String testA = "ֆޘᜅᾮ";
String testB = "\u0586\u0798\u1705\u1FAE";
System.out.println(testA.equals(testB));
System.out.println(testA);
System.out.println(testB);
try(BufferedWriter check = Files.newBufferedWriter(
Paths.get("uni-test.txt"),
StandardCharsets.UTF_8,
StandardOpenOption.CREATE,
StandardOpenOption.TRUNCATE_EXISTING)){
check.write(testA);
check.write("\n");
check.write(testB);
check.close();
} catch(IOException ioc){
}
}
Sie könnten die Werte mit den Zeichen, die Sie wollen ersetzen.
Die erste Zeile sollte True ausgeben, wenn die Zeichenfolge die tatsächliche Zeichenfolge ist, die Sie möchten. Danach geht es um die Darstellung der Charaktere. Zum Beispiel, wenn ich die Textdatei mit less
öffne, dann ist die Hälfte von ihnen gebrochen. Wenn ich es mit Firefox öffne, sehe ich alle vier Zeichen, aber einige sind wackelig. Sie benötigen eine Schriftart mit Zeichen für den entsprechenden Unicode-Wert.
Eine Sache, die Sie tun können, ist, öffnen Sie die Datei in einem Textverarbeitungsprogramm und wählen Sie eine Schriftart, die die Zeichen anzeigt, die Sie richtig wollen.
Wie vom OP vorgeschlagen, bewirkt die Eingabe der -Dfile.encoding=UTF8
, dass die Zeichen korrekt angezeigt werden, wenn System.out.println
verwendet wird. Ähnlich wie this question, die die Codierung von System.out
ändert.
Welchen Wert hat die Systemeigenschaft 'file.encoding' in der Konsole? Wie liest du die Daten, wie druckst du? Zeigen Sie etwas Code. –
Wahrscheinlich ist Ihre PowerShell-Codierung nicht UTF-8. Versuchen Sie, seine Codierung als UTF-8 zu setzen: Führen Sie den Befehl '[Console] :: OutputEncoding = [Text.UTF8Encoding] :: UTF8' aus und führen Sie dann Ihr Java-Programm aus. –
Es ist das maven-compiler-plugin, das auch die zu kompilierende Codierung kennen muss. Dies ist eine Pom-Einstellung. Fehler in der Konsole können nicht als echte Fehler betrachtet werden, da es in der Regel einen anderen Plattformcodierungssatz gibt. –