Drucken von unicode-Java-code-Problem in der windows-Konsole
Ich habe ein problem mit drucken aus einer unicode-symbol in der windows-Konsole.
Hier ist der java-code, druckt das unicode-symbol-Wert;
System.out.print("\u22A2 ");
Das problem existiert nicht wenn ich das Programm in Eclipse mit encoding-Einstellungen wie UTF-8, aber wenn es um die windows-Konsole das symbol wird ersetzt durch ein Fragezeichen.
Folgendes wurde getan, um zu versuchen, dieses problem zu überwinden, ohne Erfolg;
- Ändern Sie die schriftart von windows console, Lucida Console.
- Jedes mal, wenn ich laufen windows-Konsole werde ich ändern Sie die encoding-Einstellungen, d.h. mit der Verwendung von
chcp 65001
Einen weiteren Schritt habe ich versucht, ein paar mal ausgeführt wurde, wird die java-Datei mit einem argument, d.h. java -Dfile.encoding=UTF-8 Filter
(wobei "Filter" ist der name der Klasse)
sind Sie sicher, die Konsole läuft in unicode? könnte sein, win-1252 oder so.
Ich vermute, Sie haben bereits Lesen. stackoverflow.com/questions/8669056/...
Ich habe keine Ahnung, wie würde ich überprüfen, ich habe gesehen, ein screenshot von jemand die Konsole in seinen Möglichkeiten, er hätte Informationen darüber, welche Codierung er verwendet, aber mir tut es nicht zeigen.
nee ich nicht, da geht es um input, ich habe nicht über Sie kam
Die MS-C-runtime nicht unterstützt UTF-8, auch wenn du chcp zu 65001 in der Konsole werden Sie wahrscheinlich, hit-app-breaking-bugs. Es gibt keinen zuverlässigen Weg, um Unicode stdout, um die Windows-Konsole. Wenn Sie unbedingt muss, es ist die Win32-API
Ich vermute, Sie haben bereits Lesen. stackoverflow.com/questions/8669056/...
Ich habe keine Ahnung, wie würde ich überprüfen, ich habe gesehen, ein screenshot von jemand die Konsole in seinen Möglichkeiten, er hätte Informationen darüber, welche Codierung er verwendet, aber mir tut es nicht zeigen.
nee ich nicht, da geht es um input, ich habe nicht über Sie kam
Die MS-C-runtime nicht unterstützt UTF-8, auch wenn du chcp zu 65001 in der Konsole werden Sie wahrscheinlich, hit-app-breaking-bugs. Es gibt keinen zuverlässigen Weg, um Unicode stdout, um die Windows-Konsole. Wenn Sie unbedingt muss, es ist die Win32-API
WriteConsoleW
, aber natürlich ist es funktioniert nur auf Windows, es erfordert eine sorgfältige Handhabung, die erkennen, ob Sie reden eigentlich, um die Windows-Konsole, einige andere Konsole oder in eine Datei oder pipe, und Sie können nicht nennen es in Java (Sie müssen JVA).InformationsquelleAutor Adrian | 2013-12-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Standardmäßig ist der code-Seite mit in die CMD von Windows ist 437. Können Sie testen, indem Sie diesen Befehl ausführen, in der Eingabeaufforderung:
Und dieser code-Seite verhindern, dass Sie von der Anzeige der Unicode-Zeichen korrekt! Haben Sie code ändern, Seite 65001 UND mit -Dfile.encoding=UTF-8 für diesen Zweck.
InformationsquelleAutor spider
In Ergänzungen zu den Schritten, die Sie unternommen haben, müssen Sie auch ein PrintStream/PrintWriter kodiert, dass die gedruckten Zeichen in UTF-8.
Leider, Java-Designer haben gewählt, um zu öffnen, die standard-streams mit dem so genannten "default" - Codierung, die ist fast immer unbrauchbar,*) unter Windows. Also, mit
System.out
undSystem.err
naiv machen Ihre Programm-Ausgabe erscheint anders, je nachdem, wo Sie es ausführen. Dies ist gerade, gegen das Ziel: compile once, run anywhere.*) Es werden einige nicht-standard "code-Seite" niemand außer Microsoft erkennt auf diesem Planeten. Und AFAIK, wenn zum Beispiel Sie haben eine Deutsche Tastatur und eine "Deutsche" OEM-Windows und Sie möchten, um Datum und Zeit in Ihre Heimat-Zeitzone, es gibt einfach keine Möglichkeit, zu sagen: Aber ich will UTF-8-Eingabe - /Ausgabe in meinem CMD-Fenster. Dies ist ein Grund, warum ich mit meinem dual-Ubuntu gebootet meisten der Zeit, wo es geht, ohne zu sagen, dass das terminal nicht UTF-8.
Folgende Regel funktioniert für mich in JDK7:
Für die alten Java-Versionen, die ich ersetzen
StandardCharsets.UTF_8
durchCharset.forName("UTF-8")
Sieh mein edit, @Adrian. Es sollte dann drucken Sie Ihre Zeichenfolge wie ⊢
Ich wirklich zu schätzen Ihre Hilfe, aber ich habe keine Ahnung, warum es nicht funktioniert schon.. ich habe folgte Ihren Lösungen sehr eng, versucht, sowohl die Zeichensätze und es ist nicht nur Arbeit.. ich mache immer versuchen, alle Möglichkeiten, die ich denken konnte, aber ehm.. ich selbst kompiliert die java-Dateien mit Codierung, mit javac -encoding utf8 *.java
Letzte mal, dass ich versucht, diese Lösung zu viele Zeichen wurden gedruckt auf die Konsole (Windows-XP.) Die besten Glück ich habe, ist Rohrleitungen STDOUT durch eine andere Anwendung.
oder verwenden Sie PrintStream stackoverflow.com/a/15516722/588759
InformationsquelleAutor Ingo
Für die Arabische Sprache, die ich verwendet folgenden code:
InformationsquelleAutor Hatem Badawi