2012-06-27 17 views
12

Tenga en cuenta que no estoy preguntando cómo pero por qué. Y no sé si es un problema específico de RCP o si es algo inherente a Java.¿Por qué necesito escapar de unicode en los archivos fuente java?

Mis archivos fuente java están codificados en UTF-8.

Si defino mis cadenas literales como esto:

new Language("fr", "Français"), 
    new Language("zh", "中文") 

Funciona como espero que cuando se utiliza la cadena en la aplicación iniciándolo desde Eclipse como una aplicación Eclipse:

enter image description here

Pero si falla cuando ejecuto el .exe creado por el "Asistente de exportación de productos Eclipse":

enter image description here

La solución que uso es para escapar de los caracteres de esta manera:

new Language("fr", "Fran\u00e7ais"), // Français 
    new Language("zh", "\u4e2d\u6587") // 中文 

No hay ningún problema en hacer esto (todas mis otras cadenas están en los archivos de propiedades, sólo los idiomas nombres están codificados), pero me Me gustaría entender.

Pensé que el compilador tenía que convertir las cadenas literales java al construir the bytecode. Entonces, ¿por qué es necesario escaparse del Unicode? ¿Es incorrecto usar caracteres de alto rango Unicode en archivos fuente java? ¿Qué sucede exactamente con esos caracteres en la compilación y en qué es diferente del manejo de caracteres escapados? ¿El problema está relacionado con el caché RCP?

+10

Parece ser que el Asistente para exportación de Eclipse El producto no está interpretando sus archivos como UTF-8. Quizás necesite ejecutar la JVM de Eclipse con la codificación establecida en UTF-8 ('-Dfile.encoding = UTF8' en' eclipse.ini')? –

+1

Si bien esto no explica realmente por qué ocurre, sugiere una solución alternativa e indica que el asistente de exportación por algún motivo no parece respetar correctamente la codificación del proyecto: http://stackoverflow.com/questions/6891079/eclipse- rcp-wrong-encoding-when-deploying-the-product – Jiddo

+0

Para confirmar la explicación de @Matt Ball, que creo que es correcta, intente configurar la siguiente opción en el asistente: "Usar archivos de clase compilados en el área de trabajo" –

Respuesta

10

Parece que el Asistente de exportación de productos Eclipse no está interpretando sus archivos como UTF-8. Quizás necesite ejecutar la JVM de Eclipse con el conjunto de codificación UTF-8 (-Dfile.encoding=UTF8 en eclipse.ini)?

(Copypasta'd a petición OPs)

2

Al exportar un plug-in, que se compila a través de un proceso separado del proceso de construcción normal dentro del IDE. Hay un known bug que el proceso de compilación (PDE.Build) ignora la codificación de texto utilizada por el IDE.

La exportación se pueden hacer para que funcione correctamente mediante la especificación de la codificación de texto en el archivo build.properties de su plugin

javacDefaultEncoding.. =UTF-8 
Cuestiones relacionadas