Bitte beachten Sie, dass ich nicht frage, wie, aber warum. Und ich weiß nicht, ob es ein RCP-spezifisches Problem ist oder ob es etwas ist, das Java innewohnt.Warum muss ich Unicode in Java-Quelldateien entkommen lassen?
Meine Java-Quelldateien sind in UTF-8 codiert.
Wenn ich definiere meine Literalzeichenfolgen wie folgt aus:
new Language("fr", "Français"),
new Language("zh", "中文")
Es funktioniert wie ich erwarte, wenn ich die Zeichenfolge in der Anwendung verwenden, indem sie von Eclipse als Eclipse-Anwendung starten:
Aber wenn schlägt fehl, wenn ich die EXE starte, die vom "Eclipse-Produkt-Export-Assistenten" erstellt wird:
Die Lösung, die ich nutzen, um die Zeichen so zu entkommen:
new Language("fr", "Fran\u00e7ais"), // Français
new Language("zh", "\u4e2d\u6587") // 中文
Es gibt kein Problem in dies zu tun (alle meine anderen Strings sind in Properties-Dateien werden nur die Sprachen Namen fest einprogrammiert werden), aber ich Ich würde es gerne verstehen.
Ich dachte, der Compiler musste die Java-Literal-Strings beim Erstellen the bytecode konvertieren. Warum also ist der Unicode notwendig? Ist es falsch, High-Range-Unicode-Zeichen in Java-Quelldateien zu verwenden? Was passiert genau mit diesen Zeichen beim Kompilieren und was unterscheidet sie von der Handhabung von entkommenen Zeichen? Liegt das Problem nur im Zusammenhang mit dem RCP-Cache?
Es scheint, dass die Eclipse-Produkt Export-Assistenten Ihre Dateien als UTF-8 ist nicht richtig gemacht werden, um zu arbeiten, zu interpretieren. Vielleicht müssen Sie Eclipse JVM mit der Codierung UTF-8 ('-Dfile.encoding = UTF8' in' eclipse.ini') ausführen? –
Während dies nicht wirklich erklärt, warum es passiert, schlägt es eine alternative Lösung vor und zeigt an, dass der Export-Assistent aus irgendeinem Grund die Codierung des Projekts nicht korrekt zu berücksichtigen scheint: http://stackoverflow.com/questions/6891079/eclipse- rcp-wrong-encoding-when-deploying-the-product – Jiddo
Um die Erklärung von @Matt Ball zu bestätigen, die ich für richtig halte, versuche die folgende Option im Wizard zu setzen: "Benutze Klassendateien im Arbeitsbereich" –