Ich habe hier einige Codierungsprobleme.Übergabe eines Codierungsschalters an die JVM für eine Gradle-Task "JavaExec"
Dies ist auf einem W10 OS, aber ich benutze sowohl die DOS-Konsole und die Cygwin-Shell, um Aufgaben direkt auszuführen. In Eclipse verwende ich das Buildship-Plugin und für meine "Produktions" -Ausgabe mache ich ein "fettes" Glas (d. H. Enthält alle Abhängigkeitsgläser).
Um das Fett Glas zu bekommen in einer DOS-Konsole ich so gehen zu laufen:
> chcp 65001
> java -jar -Dfile.encoding=UTF-8 myFatJar.jar
das Fett jar Um in einer Cygwin-Konsole ausführen ich die „chcp“ Befehl auslassen
. .. und beide laufen gut, keine Codierungsprobleme.
Ich habe eine run
Aufgabe, die wie folgt aussieht:
task myRun(type: JavaExec, dependsOn: assemble) {
standardInput = System.in
classpath sourceSets.main.runtimeClasspath
main = "core.ConsoleHandler"
}
Wenn ich laufen diese in Eclipse (Buildship Plugin) gibt es keine Codierung probs.
Wenn im gradle dir, ich gehe wie folgt aus:
> gradle myRun
ich Codierung Probleme, ob ich eine DOS oder Cygwin-Konsole: Probleme mit Unicode-Zeichen zu System.out
gehen.
In meinem gradle.build (ich bin mit der application
Plugin) habe ich versucht, dies:
applicationDefaultJvmArgs = ["-Dfile.encoding=UTF-8"]
... aber dies scheint keine Wirkung zu haben.
Übrigens, während des Testens habe ich etwas Ausgabe gehen zu System.out
... und dies kommt gut aus, wenn ich die JUnit/Mockito Testergebnisse untersuchen.
In meiner Suche „alle meine Enten in einer Reihe“ Ich habe versucht, mit dem Java-Code durcheinander auch selber zu erhalten: statt mit System.out
direkt habe ich versucht, dies:
PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.print(message);
... aber diese dann dazu gebracht, Kodierung Probleme mit der Ausgabe an System.out
beim Ausführen von Tests!
Der gradle Befehl applicationDefaultJvmArgs
macht mich zu fragen, ob es eine Möglichkeit der Weitergabe „Nicht-Standard“ schaltet auf die JVM ist, wenn eine JavaExec
-Typ Aufgabe ... runing
jemals so etwas später
Hah .. so ist die Art und Weise, mit diesen Dingen:
ich habe die folgende Zeile in meiner myRun
Aufgabe:
jvmArgs "-Dfile.encoding=UTF-8"
... und das Codeproblem mit den DOS- und Cygwin-Konsolen läuft war ... gelöst! Jedoch, wenn ich die myRun
Aufgabe in Eclipse Buildship laufen lasse, bekomme ich jetzt Kodierungsprobleme!:
Rà © fà © rà © juge des ~ s: "Judge in Chambers sitzt mit dringenden Angelegenheiten zu befassen"
à © tat juge de mise en ~: joinder Ausgabe Richter
'é' sollte 'é' sein (und war vor dem Hinzufügen dieses jvmArgs
Argument)
Insgesamt ist dies natürlich eine Verbesserung ... aber es wäre schön, von einem Experten zu wissen, was hier vor sich geht ...