2016-04-27 3 views
3

I-Eingang einige Argumente mag -D 你好 = 你好, und eine einzige Klasse aufrufen,Run Java-Programm mit chinesischen Argumente in Eclipse

die Java-Datei wie folgt:

public class Test { 

public static void main(String[] args) throws Exception { 
    for(String name :args){ 
     System.out.println(name); 
    } 
} 

}

Druckergebnisse:

-D??=?? 

wie könnte dieses Problem beheben?

+0

Sehen Sie, wenn diese beiden Links helfen: http://www.mkyong.com/java/how-to-display-chinese-character-in-eclipse-console/ und http://stackoverflow.com/questions/8056900/how-to-print-vereinfacht-chinesische-zeichen-zu-eclipse-konsole – Berger

+0

Haben Sie das versucht? [So drucken Sie [vereinfachte] chinesische Zeichen in die Eclipse-Konsole?] (Http://stackoverflow.com/questions/8056900/how-to-print-simplified-chinese-characters-to-eclipse-console) oder [How to unterstützt UTF-8-Kodierung in Eclipse] (http://stackoverflow.com/questions/9180981/how-to-support-utf-8-encoding-in-eclipse) –

+0

Die Konsole konnte korrekte chinesische Zeichen und Projekt, Java-Datei zeigen , allgemeine Codierung in Debug-Konfigurationen alle UTF-8 gesetzt, aber seltsam, warum chinesische Schriftzeichen in Programmargumente einzustellen, die Hauptmethode bekommen die Argumente konnte nicht korrekt zeigen. – Davy

Antwort

0

Sieht aus wie eine saubere Art und Weise nicht möglich ist: Passing command line unicode argument to Java code

Leider kann man nicht zuverlässig Nicht-ASCII-Zeichen mit Kommandozeilen-Anwendungen verwenden, die die Windows-C-Laufzeit des stdlib verwenden, wie Java (und ziemlich sehr viele nicht Windows-spezifische Skriptsprachen wirklich). Diese

ist, weil sie ihre Ein- und Ausgabe lesen unter Verwendung eine locale-spezifische Codepage standardmäßig, die nie ein UTF ist, im Gegensatz zu alle anderen modernen OS, die UTF-8 verwendet.

Während Sie die Codeseite eines Terminals auf etwas anderes den chcp Befehl ändern können, die Unterstützung für die UTF-8-Codierung unter chcp 65001 in ein paar Möglichkeiten gebrochen ist, die Anwendungen wahrscheinlich tödlich Bein zu stellen.

Wenn Sie nur Japaner müssen Sie Codepage 932 wechseln könnten (ähnlich Shift-JIS), indem Sie Ihre locale-Einstellung (‚Sprache für Nicht-Unicode- Anwendungen‘ in den Ländereinstellungen) nach Japan. Für Zeichen, die sich nicht auf dieser Codepage befinden, schlägt dies jedoch weiterhin fehl .

Wenn Sie Nicht-ASCII-Zeichen über die Befehlszeile erhalten müssen zuverlässig unter Windows, müssen Sie die Win32-API-Funktion GetCommandLineW direkt anrufen, um die encode-to-System-Code-Seite Schicht zu vermeiden. Wahrscheinlich würden Sie das mit JNA machen wollen.

Verwandte Themen