Si prega di notare che non sto chiedendo come ma perché. E non so se si tratta di un problema specifico RCP o se è qualcosa di inerente a Java.Perché devo uscire dall'unicode nei file di origine java?
I miei file di origine Java sono codificati in UTF-8.
Se io definisco i miei stringhe letterali come questo:
new Language("fr", "Français"),
new Language("zh", "中文")
Funziona come mi aspetto quando uso la stringa nell'applicazione lanciandolo dal Eclipse come applicazione Eclipse:
Ma se fallisce quando avvio l'.exe creato dal "Eclipse Product Export Wizard":
La soluzione che uso è quello di fuggire i caratteri come questo:
new Language("fr", "Fran\u00e7ais"), // Français
new Language("zh", "\u4e2d\u6587") // 中文
Non c'è nessun problema nel fare questo (tutti i miei altri stringhe sono in file di proprietà, solo le lingue nomi sono hardcoded) ma ho mi piacerebbe capire
Ho pensato che il compilatore doveva convertire le stringhe letterali java durante la creazione di the bytecode. Quindi, perché l'unicode è in grado di sfuggire? È sbagliato usare i caratteri unicode di alta gamma nei file di origine Java? Cosa succede esattamente a questi personaggi alla compilazione e in che cosa è diverso dalla gestione dei caratteri di escape? Il problema è relativo alla cache RCP?
Sembra che l'esportazione guidata Eclipse Il prodotto non è interpretare i file come UTF-8. Forse è necessario eseguire la JVM di Eclipse con la codifica impostata su UTF-8 ('-Dfile.encoding = UTF8' in' eclipse.ini')? –
Sebbene questo non spieghi realmente perché accade, suggerisce una soluzione alternativa e indica che la procedura guidata di esportazione per qualsiasi motivo non sembra rispettare correttamente la codifica del progetto: http://stackoverflow.com/questions/6891079/eclipse- rcp-wrong-encoding-when-deploying-the-product – Jiddo
Per confermare la spiegazione di @Matt Ball, penso che sia corretto, prova ad impostare la seguente opzione nella procedura guidata: "Usa i file di classe compilati nello spazio di lavoro" –