2012-06-27 7 views
12

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:

enter image description here

Aber wenn schlägt fehl, wenn ich die EXE starte, die vom "Eclipse-Produkt-Export-Assistenten" erstellt wird:

enter image description here

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?

+10

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? –

+1

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

+0

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" –

Antwort

10

Es scheint, dass der Eclipse Product Export-Assistent Ihre Dateien nicht als UTF-8 interpretiert. Vielleicht müssen Sie Eclipse JVM mit der Codierung UTF-8 (-Dfile.encoding=UTF8 in eclipse.ini) ausführen?

(Copypasta'd OPs auf Anfrage)

2

Wenn ein Plug-in zu exportieren, es durch ein Verfahren, getrennt von dem normalen Prozeß baut innerhalb des IDE kompiliert wird. Es gibt einen known bug, dass der Erstellungsprozess (PDE.Build) die Textcodierung ignoriert, die von der IDE verwandt wird.

Der Export kann durch Angabe der Textkodierung in der Datei build.properties Ihres Plugins

javacDefaultEncoding.. =UTF-8