Pregunta

Estamos implementando i18n usando JSTL y encontramos un problema que los textos de recursos definidos en el archivo .properties y que tienen caracteres no ISO 8859 (por ejemplo, idiomas inídicos) no pueden representarse por etiqueta.

Después de sumergirnos en el código de etiqueta y la clase BundleHelper, finalmente descubrimos que utiliza internamente el método ResourceBundle.getBundle, que a su vez usa PropertyResourceBundle para cargar el archivo .properties como paquete de recursos.

Se basa internamente en el método java.util.Properties # load (InputStream) que no admite la lectura de caracteres que no son ISO 8859 y la única solución es representar dichos caracteres en / u hexadecimal hexadecimal hexadecimal, que es bastante ¡poco práctico si el archivo .properties completo es para el idioma hindi!

¿Hay alguna solución para esto? ¡Intenté usar el formato XML en el archivo .properties pero PropertyResourceBundle no lo reconoció!

Los detalles del entorno son: Jdk 1.5, Weblogic 9.2

¿Fue útil?

Solución

¿Tiene absolutamente uso de JDK 1.5? Si pudiera subir a 1.6, podría usar la sobrecarga load (Reader) que le permitiría almacenar los archivos en otras codificaciones (por ejemplo, UTF-8). No estoy seguro de cómo encajaría eso con PropertyResourceBundle, ciertamente.

No olvide que incluso trabajando con archivos ISO-8859-1, no tiene que usar ese formato para editar el archivo. Puede usar native2ascii para convertir un archivo de una codificación diferente. Mantenga su " fuente " archivos de propiedad como UTF-8, luego ejecute native2ascii como parte de su compilación. Por ejemplo:

native2ascii -encoding UTF-8 Foo.properties.utf8 Foo.properties

Otros consejos

Escriba sus archivos en la codificación que desee y ejecútelos a través de native2ascii (que viene con el JDK exactamente para este propósito) como parte del proceso de compilación o implementación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top