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:
Pero si falla cuando ejecuto el .exe creado por el "Asistente de exportación de productos Eclipse":
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?
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')? –
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
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" –