2012-06-27 8 views
12

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:

enter image description here

Ma se fallisce quando avvio l'.exe creato dal "Eclipse Product Export Wizard":

enter image description here

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?

+10

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

+1

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

+0

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

risposta

10

Sembra che l'Esportazione guidata prodotto Eclipse non interpreti i file come UTF-8. Forse è necessario eseguire JVM di Eclipse con la codifica impostata su UTF-8 (-Dfile.encoding=UTF8 in eclipse.ini)?

(Copypasta'd su richiesta PO)

2

Quando si esporta un plug-in, esso viene compilato attraverso un processo separato dal processo di generazione normale all'interno della IDE. C'è un known bug che il processo di compilazione (PDE.Build) ignora la codifica del testo utilizzata dall'IDE.

L'esportazione può essere fatto per funzionare correttamente specificando la codifica del testo nel file build.properties del vostro plugin

javacDefaultEncoding.. =UTF-8 
Problemi correlati