Pregunta

Quiero escribir "árabe" en el paquete de recursos de mensajes (propiedades) de archivos, pero cuando trato de guardarlo consigo este error:

"Guardar no pudo completarse Algunos caracteres no pueden ser asignadas mediante "ISO-85591-1" codificación de caracteres. De cualquier cambio de codificación o eliminar el carácter ... "

Can guía de alguien por favor?

Quiero escribir:

global.username = ??? ????????

¿Cómo debo escribir en árabe de "nombre de usuario" en el archivo de propiedades? Por lo tanto, que la internacionalización funciona ..

BR SC

¿Fue útil?

Solución

http://sourceforge.net/projects/eclipse-rbe/

Puede utilizar el anterior plugin para el IDE Eclipse para hacer la conversión de Unicode para usted.

Otros consejos

Como se describe en la referencia de clase para "Propiedades"

propiedades

La carga (lector) / del almacén (escritor, String) de carga métodos y almacenar desde y hacia una corriente basada en caracteres en un formato orientado a líneas simples se especifica a continuación. La carga (InputStream) / tienda (OutputStream, String) métodos funcionan de la misma manera que la carga (lector) / tienda (escritor, String) par, excepto el flujo de entrada / salida se codifica en ISO 8859-1 codificación de caracteres. Los caracteres que no pueden ser representados directamente en este codificación puede ser escrito utilizando escapes Unicode; Sólo se permite un solo carácter 'u' en una secuencia de escape. La herramienta native2ascii puede ser usado para convertir archivos de propiedades a y de otras codificaciones de caracteres.

paquetes de recursos basados ??en propiedades deben ser codificado en ISO-8859-1 para utilizar el mecanismo de carga por defecto, pero he utilizado con éxito este código para permitir que los archivos de propiedades a ser codificados en UTF-8:

private static class ResourceControl extends ResourceBundle.Control {
    @Override
    public ResourceBundle newBundle(String baseName, Locale locale,
            String format, ClassLoader loader, boolean reload)
            throws IllegalAccessException, InstantiationException,
            IOException {
        String bundlename = toBundleName(baseName, locale);
        String resName = toResourceName(bundlename, "properties");
        InputStream stream = loader.getResourceAsStream(resName);
        return new PropertyResourceBundle(new InputStreamReader(stream,
                "UTF-8"));
    }

}

Entonces, por supuesto, usted tiene que cambiar la codificación del propio archivo a UTF-8 en su IDE, y se puede utilizar de esta manera:

ResourceBundle bundle = ResourceBundle.getBundle(
    "package.Bundle", new ResourceControl());

new String(ret.getBytes("ISO-8859-1"), "UTF-8"); trabajó para mí. archivo de propiedades guardado en la norma ISO-8859-1 Codificación.

Si está utilizando Eclipse, puede elegir la opción "Ventana -> Preferencias" y luego "filtro de tipos de contenido". Entonces usted debe ser capaz de establecer la codificación predeterminada. Hay una captura de pantalla que muestra esto en la parte superior de este post .

Este es principalmente un problema de configuración del editor. Si está trabajando en Windows, puede editar el texto en un editor que soporta UTF-8. Bloc de notas o Eclipse una función de editor debería ser más que suficiente, siempre que haya guardado el archivo como UTF-8. En Linux, he utilizado con éxito gedit y emacs. En Bloc de notas, puede hacerlo pulsando el botón 'Guardar como' y elegir 'UTF-8' de codificación. Otros editores deben tener características similares. Algunos editores pueden requerir el cambio de la fuente con el fin de letras de la exposición correcta, pero parece que no tiene este problema.

Una vez dicho esto, hay otros pasos a tener en cuenta cuando se realiza i18n de árabe. Se pueden encontrar algunos enlaces útiles a continuación. Asegúrese de utilizar native2ascii el archivo de propiedades antes de usarlo de otra manera no podría funcionar. Pasé mucho tiempo hasta que me di éste hacia fuera.

Tomcat webapps

Usando nativ2ascii con archivos de propiedades

Además de la herramienta native2ascii mencionado en otras respuestas hay una biblioteca Java de código abierto que puede proporcionar la funcionalidad de conversión que se utiliza en el código

Biblioteca MgntUtils tiene una utilidad que convierte cadenas en cualquier idioma (incluyendo caracteres especiales y emojis a la secuencia Unicode y viceversa:

result = "Hello World";
result = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(result);
System.out.println(result);
result = StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString(result);
System.out.println(result);

La salida de este código es:

\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064
Hello World

La biblioteca se puede encontrar en Maven central o en Github viene como artefacto experto y con fuentes y javadoc

Aquí es Javadoc de la clase StringUnicodeEncoderDecoder

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