encoding Codificación UTF-8 de propiedades Java en Eclipse





6 Answers

Los archivos de propiedades son ISO-8859-1 por definición; consulte los documentos para la clase Properties .

Spring tiene un reemplazo que puede cargarse con una codificación específica, usando PropertiesFactoryBean .

EDITAR: Como notó Laurence en los comentarios, Java 1.6 introdujo sobrecargas para load y store que toman un Reader / Writer . Esto significa que puede crear un lector para el archivo con la codificación que desee y pasarlo a la load . Lamentablemente, FileReader aún no le permite especificar la codificación en el constructor (aargh), por lo que tendrá que encadenar FileInputStream y InputStreamReader juntos. Sin embargo, funcionará.

Por ejemplo, para leer un archivo usando UTF-8:

Properties properties = new Properties();
InputStream inputStream = new FileInputStream("path/to/file");
try {
    Reader reader = new InputStreamReader(inputStream, "UTF-8");
    try {
        properties.load(reader);
    } finally {
        reader.close();
    }
} finally {
   inputStream.close();
}
java eclipse encoding utf-8

Recientemente tuve que cambiar la codificación de la aplicación web en la que estoy trabajando, desde ISO-xx a utf8 . Todo fue sin problemas, excepto los archivos de propiedades. -Dfile.encoding=UTF-8 en eclipse.ini y los archivos normales funcionan bien. Sin embargo, las propiedades muestran un comportamiento extraño.

Si utf8 propiedades codificadas de utf8 desde Notepad ++ y las utf8 en Eclipse, se muestran y funcionan bien. Cuando vuelvo a abrir el archivo de propiedades, veo algunos caracteres Unicode en lugar de los propios, como:

Zur\u00EF\u00BF\u00BDck instead of Zurück

pero la aplicación todavía funciona bien. Si comienzo a editar las propiedades, agrego algunos caracteres especiales y las guardo, se muestran correctamente, sin embargo, no funcionan y todos los caracteres especiales que antes funcionaban ya no funcionan.

Cuando comparo la versión local con CVS, puedo ver los caracteres especiales correctamente en el archivo remoto y, después de la actualización, comienzo de nuevo: la aplicación funciona, pero Eclipse muestra los caracteres Unicode.

Intenté cambiar la codificación del archivo haciendo clic con el botón derecho y seleccionando "Otro: UTF8", pero no me ayudó. También dijo: "determinado a partir del contenido: ISO-8859-1"

Estoy usando Java 6 y Jboss Developer basado en Eclipse 3.3

Puedo vivir con esto editando las propiedades en Notepad ++ y pegándolas en Eclipse, pero le agradecería si alguien pudiera ayudarme a arreglar esto en Eclipse.




Properties props = new Properties();
URL resource = getClass().getClassLoader().getResource("data.properties");         
props.load(new InputStreamReader(resource.openStream(), "UTF8"));

Funciona de maravilla

:-)




Properties props = new Properties();
URL resource = getClass().getClassLoader().getResource("data.properties");         
props.load(new InputStreamReader(resource.openStream(), "UTF8"));

esto funciona bien en Java 1.6. ¿Cómo puedo hacer esto en 1.5, ya que la clase Propiedades no tiene un método para analizar el InputStreamReader ?







Te recomiendo que uses Attesoro ( http://attesoro.org/ ). Es simple y fácil de usar. Y está hecho en java.




Si las propiedades son para XML o HTML, es más seguro usar entidades XML. Son más feos de leer, pero significa que el archivo de propiedades puede tratarse como ASCII directo, por lo que nada se arruinará.

Tenga en cuenta que HTML tiene entidades que XML no tiene, así que lo mantengo seguro utilizando XML directo: http://www.w3.org/TR/html4/sgml/entities.html




Related