java eclipse utf-8 properties-file

Eclipse incorrecto Java propiedades codificación UTF-8



properties-file (5)

Causa principal:

De forma predeterminada, la codificación de caracteres ISO 8859-1 se usa para el archivo de propiedades de Eclipse (lea here ), por lo que si el archivo contiene algún carácter más allá de ISO 8859-1, entonces no se procesará como se esperaba.

Solución 1

Si usa Eclipse, notará que convierte implícitamente el carácter especial en equivalente a / uXXXX. Intenta copiar

会意 字 / 會意 字

en un archivo de propiedades abierto en Eclipse.

EDITAR: Según el comentario de OP

Actualice la codificación de su Eclipse como se muestra a continuación. Si configura la codificación como UTF-32, entonces incluso puede ver caracteres chinos, que generalmente no puede ver.

Cómo cambiar la codificación del archivo de propiedades en Eclipse: consulte this error de Eclipse Bugzilla para obtener más detalles, que se refieren a varias otras posibilidades y, al final, sugiera lo que he resaltado a continuación.

Los caracteres chinos se pueden ver en Eclipse después de que la codificación se haya configurado correctamente:

Solucion 2

Si lo anterior no funciona de manera consistente para usted ( sí me funciona y nunca veo problemas de codificación ), intente esto usando algún complemento de Eclipse que maneje la codificación de propiedades u otros archivos. Por ejemplo , el editor de Eclipse ResourceBundle o el editor Extended Resource-Bundle

Recomendaría utilizar Eclipse ResourceBundle Editor.

Solucion 3

Otra posibilidad de cambiar la codificación del archivo es usar la opción Edit --> Set Encoding . Realmente importa porque cambia el juego de caracteres predeterminado y la codificación del archivo. Juega un poco cambiando la codificación usando Edit --> Set Encoding opción de Edit --> Set Encoding y sigue el sistema de Java System.out.println("Default Charset=" + Charset.defaultCharset()); y System.out.println(System.getProperty("file.encoding"));

Como aparte: 1

Procese el archivo de propiedades para tener contenido con la codificación de caracteres ISO 8859-1 mediante native2ascii - Convertidor de nativo a ASCII

Lo que hace native2ascii : convierte todos los caracteres que no son ISO 8859-1 en su equivalente / uXXXX. Esta es una buena herramienta porque no necesita buscar el equivalente / uXXXX de un carácter especial.

Uso para UTF-8: native2ascii -encoding utf8 e:/a.txt e:/b.txt

Como aparte: 2

Cada programa de computadora, ya sea un IDE, un servidor de aplicaciones, un servidor web, un navegador, etc., solo entiende los bits, por lo que necesita saber cómo interpretar los bits para que tenga sentido debido a que, dependiendo de la codificación utilizada, los mismos bits pueden representar diferentes caracteres. . Y ahí es donde la "codificación" aparece en la imagen al proporcionar un identificador único para representar a un personaje, de modo que todos los programas de computadora, diversos sistemas operativos, etc. conozcan la manera correcta de interpretarlo.

Entonces, si ha escrito en un archivo usando algún esquema de codificación, digamos UTF-8, y luego lea usando cualquier editor pero ejecutando con el esquema de codificación como UTF-8, entonces puede esperar obtener la visualización correcta.

Lea esta respuesta para obtener más detalles, pero desde la perspectiva del servidor del navegador.

Tengo un proyecto JavaEE, en el que uso archivos de propiedades de mensajes. La codificación de esos archivos se establece en UTF-8. En el archivo utilizo las diéresis alemanas como ä , ö , ü . El problema es que a veces esos caracteres se reemplazan con unicode como /uFFFD/uFFFD , pero no para todos los caracteres. Ahora, tengo un caso donde ä y ü son reemplazados con /uFFFD/uFFFD , pero no para cada ocurrencia de ä y ü .

El git diff me muestra algo como esto:

mail.adresses=E-Mail hinzufügen: -mail.adresses.multiple=E-Mails durch Kommata getrennt hinzufügen. +mail.adresses.multiple=E-Mails durch Kommata getrennt hinzuf/uFFFD/uFFFDgen. mail.title=Einladungs-E-Mail box.preview=Vorschau box.share.text=Sie können jetzt die ausgewählten Bilder mit Ihren Freunden teilen. @@ -6880,7 +6880,7 @@ browser.cancel=Abbrechen browser.selectImage=übernehmen browser.starImage=merken browser.removeImage=Löschen -browser.searchForSimilarImages=ähnliche +browser.searchForSimilarImages=/uFFFD/uFFFDhnliche browser.clear_drop_box=löschen

Además, hay líneas cambiadas, que no he tocado. No entiendo por qué tengo tal comportamiento. ¿Cuál podría ser la causa del problema anterior?

Mi sistema:

  • Antergos / Arch Linux

    • Sistema de codificación UTF-8

      Python 3.5.0 (default, Sep 20 2015, 11:28:25) [GCC 5.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.getdefaultencoding() ''utf-8''

  • Eclipse Marte 1

    • Codificación de archivo de texto UTF-8
    • Archivo de propiedades de codificación UTF-8
  • Tomcat 8
  • Java JDK 8

Si utilizo otro Editor como Atom para editar esos archivos de propiedades de mensajes, no tengo este problema.

También me di cuenta en un caso, si copio el valor original browser.searchForSimilarImages=ähnliche de Git diff y sustituyo el valor incorrecto browser.searchForSimilarImages=/uFFFD/uFFFDhnliche en Eclipse con eso, entonces tengo las diéresis correctas en el archivo de propiedades del mensaje .


Agregue los siguientes argumentos a su archivo eclipse.ini .

-Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8

De forma predeterminada, Eclipse utiliza el formato de codificación recogido por la Máquina Virtual de Java (JVM). Además, puede establecer la codificación del archivo en utf-8 .


Esto parece una mezcla de codificación de Eclipse y git o más bien no de codificación.

Git usa bytes en bruto y no le importa la codificación. Usando git diff puedes obtener caracteres como los que se muestran here . Un ejemplo es R<C3><BC>ckg<C3><A4>ngig # should be "Rückgängig" .

Como puede ver, hay dos cosas divertidas entre paréntesis que se muestran por diéresis. Y en su editor, siempre hay dos /uFFFD para cada diéresis en las líneas que comienzan con + .

Entonces asumo que su editor UTF-8 intenta interpretar la notación de git y falla. Esto, a su vez, conduce a la representación /uFFFD , que básicamente significa que este es un carácter cuyo valor es desconocido o no representable ( consulte aquí ).

Como se sugiere en el primer enlace, puede intentar configurar LESSCHARSET=UTF-8 en su variable de entorno (Windows). Hmm, en Linux debería estar en etc/profile ?


Se espera que los archivos de propiedades estén codificados en ISO-8859-1 (Latin-1) . Lo más probable es que este eclipse también se haya configurado de forma predeterminada.

Debe asegurarse de que todas las herramientas que se ejecutan en la compilación o lo que sea, ignoren la especificación y utilicen UTF-8 en su lugar.


consulte: un marcador como FFFD (CARACTER DE REEMPLAZO) en http://unicode.org/faq/utf_bom.html

y ver native2ascii --help

-encoding encoding_name Specifies the name of the character encoding to be used by the conversion procedure. If this option is not present, then the default character encoding (as determined by the java.nio.charset.Charset.defaultCharset method) is used. The encoding_name string must be the name of a character encoding that is supported by the JRE. See Supported Encodings at http://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html

un caso

$ file yourfile.properties yourfile.properties : ISO-8859 text, with very long lines $ native2ascii -encoding ISO-8859-1 yourfile.properties yourfile.properties