Tengo un JavaEE proyecto, en el que yo uso mensaje de los archivos de propiedades. La codificación de los archivos se establece en UTF-8. En el archivo que el uso de la diéresis alemanas como ä, ö, ü. El problema es que, a veces, dichos caracteres se reemplazan con unicode como \uFFFD\uFFFD, pero no para cada personaje. Ahora, tengo un caso donde ä y ü ambos son reemplazados con \uFFFD\uFFFD, pero no es para todos los que ocurren 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.selectImagebernehmen
 browser.starImage=merken
 browser.removeImage=Löschen
-browser.searchForSimilarImageshnliche
+browser.searchForSimilarImages=\uFFFD\uFFFDhnliche
 browser.clear_drop_box=löschen

También, hay líneas cambiado, que no he tocado. No entiendo por qué tengo este tipo de comportamiento. Lo que 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

    • Archivo de texto de codificación UTF-8
      Eclipse mal de propiedades Java codificación UTF-8
    • Archivo de propiedades de codificación UTF-8
      Eclipse mal de propiedades Java codificación UTF-8
  • Tomcat 8
  • Java JDK 8

Si puedo usar otro Editor como Átomo de modificar las propiedades de los mensajes de los archivos, no me encontré con este problema.

También me di cuenta en un caso, si puedo copiar el valor original browser.searchForSimilarImages=ähnliche de Git diff y reemplazar el valor incorrecto browser.searchForSimilarImages=\uFFFD\uFFFDhnliche en Eclipse con eso, entonces tengo la correcta diéresis en el mensaje de archivo de propiedades.

  • algunas de las letras Unicode en esponal lleva un collar de carácter, les recomendamos el uso de herramientas especiales para convertir todas las cartas para escapó de la cadena antes de pegar dentro del archivo de propiedades. De lo contrario, el uso de Java de Código nueva Cadena de valor.getBytes(«ISO-8859-1»), «UTF-8»); en donde el valor es el valor de las propiedades
  • Lo especial de la herramienta de a qué te refieres? ¿Cómo debo hacer new String(value.getBytes("ISO-8859-1"), "UTF-8"); a tener que corregir en el archivo de propiedades?
  • Debido a la ISO-8859-1 problema, yo recomiendo no usar los valores predeterminados de las propiedades cargador proporcionado por Java. Reemplace el proceso de carga de modo que directamente las cargas de todo, desde archivos UTF-8 en lugar de: stackoverflow.com/questions/4659929/…
  • Mis colegas no tienen este problema. Me pregunto por qué y cuál es la causa de ella.
  • los archivos de propiedades definidas para el uso de ISO-8859-1 de la codificación. que no debe trabajar en todos los si utiliza UTF-8, así que no veo el punto de utilizar este tipo de archivos.
  • ¿Cómo es tu espacio de trabajo de Eclipse de la codificación de juego? Ventana > Preferencias > General > espacio de trabajo > Archivo de Texto de Codificación. Debe ser UTF-8. Respuesta de hagrawal definitivamente lo hace peor. Por favor volver a poner «Archivo de Propiedades Java» de la codificación ISO-8859-1 y no la toque.
  • No ha proporcionado sus razones sobre por qué «pensar» que no es bueno, simplemente decir que no es en absoluto suficiente.
  • Se establece en UTF-8.

InformationsquelleAutor BuZZ-dEE | 2015-06-30

5 Comentarios

  1. 31

    Causa raíz:

    Por defecto ISO 8859-1 la codificación de caracteres se utiliza para Eclipse archivo de propiedades (leer aquí), por lo que si el archivo contiene los caracteres más allá de la ISO 8859-1, entonces no será procesada como se esperaba.

    Solución 1

    Si usas Eclipse, a continuación, usted notará que se convierte implícitamente el carácter especial en \uXXXX equivalente. Intente copiar

    会意字 /會意字

    en un archivo de propiedades que se abrió en Eclipse.

    EDIT: por comentario de OP

    Actualización de la codificación de Eclipse como se muestra a continuación. Si establece la codificación UTF-32, a continuación, incluso se puede ver el carácter Chino, que no se puede ver, en general.

    Cómo cambiar la Codificación del archivo de propiedades en Eclipse: Ver este Eclipse error Bugzilla para obtener más detalles, que habla sobre varias otras posibilidades y en el extremo de sugerir lo que he resaltado a continuación.
    Eclipse mal de propiedades Java codificación UTF-8

    Caracteres chinos puede ser visto en Eclipse después de la codificación se establece correctamente:
    Eclipse mal de propiedades Java codificación UTF-8

    Solución 2

    Si encima de no trabajar de forma constante para que usted (que hace el trabajo para mí y nunca veo los problemas de codificación), a continuación, intente esta utilizando algunos el plugin de Eclipse que se encarga de la codificación de propiedades u otros archivos. Por ejemplo Eclipse Un Resourcebundle Editor o Extendido de Recursos-editor de paquetes de

    Me gustaría recomendar el uso de Eclipse un resourcebundle Editor.

    Solución 3

    Otra posibilidad para el cambio de codificación de archivo con Edit --> Set Encoding opción. Es realmente importante porque cambia el conjunto de caracteres por defecto y la codificación del archivo. Jugar con por el cambio de codificación utilizando Edit --> Set Encoding opción y no siguiendo Java sysout System.out.println("Default Charset=" + Charset.defaultCharset()); y System.out.println(System.getProperty("file.encoding"));

    Eclipse mal de propiedades Java codificación UTF-8


    Como un aparte: 1

    Proceso el archivo de propiedades para que el contenido de la ISO 8859-1 codificación de caracteres mediante el uso de native2ascii – Natal-a-ASCII Converter

    Lo native2ascii hace: convierte todos los no-ISO 8859-1 personaje en su equivalente \uXXXX. Esta es una buena herramienta porque usted no necesita buscar el \uXXXX equivalente de carácter especial.

    Uso de UTF-8: native2ascii -encoding utf8 e:\a.txt e:\b.txt


    Como un aparte: 2

    Cualquier programa de ordenador sea un IDE, servidor de aplicaciones, servidor web, el navegador, etc. comprende solamente los bits, por lo que es necesario saber cómo interpretar las piezas para que se esperaba sentido fuera de él, porque dependiendo de la codificación utilizada, los mismos bits pueden representar diferentes personajes. Y que es donde la «Codificación» entra en el cuadro, dando un identificador único para representar un carácter, de modo que todos los programas de ordenador, diversa de sistema operativo, etc. sabe exacta de la forma correcta de interpretar.

    Por lo tanto, si usted ha escrito en un archivo mediante algún esquema de codificación, digamos, por ejemplo, UTF-8, y luego de leer con cualquier editor, pero se ejecuta con el esquema de codificación UTF-8, entonces usted puede esperar para obtener la correcta visualización.

    Por favor lea mi esta respuesta para obtener más detalles, pero desde el navegador del servidor de perspectiva.

    • No quiero tener las cosas como \uXXXX en el archivo de propiedades. Quiero tener una correcta UTF-8 representación en el archivo.
    • He editado mi respuesta a la dirección de preocupación. El chino es el idioma ideográfico, si usted puede ver los caracteres Chinos, a continuación, puede ver casi todo. Por favor, hágamelo saber si esto no le ayuda.
    • Que ya está en UTF-8, ¿por qué debo utilizar la codificación UTF-32. Mis colegas también el uso de UTF-8 y no tienen este problema, así que creo que hay musst ser otra solución.
    • Los personajes que han mostrado caídas unders «Latin-1 Suplemento» de bloque Unicode, y sí que es cubierto por la codificación UTF-8 esquema. He demostrado como un ejemplo de que si se establece UTF-32, a continuación, incluso se puede ver el carácter Chino que no puede ver si su esquema de codificación es UTF-8. Ahora, para el problema de la parte que se enfrentan – creo que usted puede editar su archivo de propiedades en algún otro editor distinto de Eclipse que está teniendo UTF-8, probablemente en algunos diff software como WinMerge. Así, puede ser atornilladas.
    • No, editar los archivos en Eclipse. Además, el problema no se produce si puedo usar un editor como Gedit o Atom.
    • Tienes su respuesta o algo que hayas encontrado útil, si no, entonces por favor, escriba su respuesta para que otros se han beneficiado de él. stackoverflow.com/help/accepted-answer
    • No, y también la respuesta no ayudó a resolver el problema, así que no puedo aceptar uno.
    • Ok, por favor no te olvides de publicar su propia respuesta, si usted es capaz de resolverlo. Como por mí, podría haber algún problema con el Eclipse sólo porque sus compañeros son buenas con UTF-8 y hasta nunca he encontrado un comportamiento errático, tras configurar Eclipse de codificación. Así, puede ser que usted puede darle una oportunidad a descargar un fresco de la instalación de Eclipse, y también asegurarse de que usted no esté editando sus propiedades en cualquier editor que no es compatible con UTF-8, incluyendo el auto-fusión de software de SCM herramientas.
    • Otra importante prueba – una limpia y nueva área de trabajo así, muchas veces de área de trabajo de tornillo gusta nada ..
    • Tienes alguna solución a esto ??
    • El problema también existe en Eclipse Marte 1.
    • Estoy realmente seguro de si Eclipse habría problema si ha establecido la codificación correctamente porque he estado usando el mismo y no he encontrado ningún problema. Hacer esta pequeña prueba a descargar Notepad++ si usted no tiene, de la codificación de la opción en la barra de menú, seleccione ANSI y, a continuación, poner algo de FR carácter y guardarlo. Hagan lo mismo para el otro archivo nuevo, pero esta vez seleccione la codificación UTF-8. Ahora abra los archivos de nuevo el uso de UTF-8 editor y ANSI. , por Lo tanto, lo que importa es con qué esquema de codificación que se guardan los archivos y con qué esquema de codificación de visualización de los archivos.
    • Para obtener resultado esperado, tanto debería ser el mismo,
    • Tenga en cuenta que puede definir la codificación en el archivo de nivel (a través de las Propiedades del archivo desde el Explorador de Paquetes o el Navegador). También, en el código, asegúrese de usar la carga/tienda de métodos que tengan un Lector/Escritor de objetos, respectivamente. Que garantiza que se puede especificar la codificación al leer el archivo en su aplicación.
    • El cambio de «Archivo de Propiedades Java» de la codificación en Eclipse propiedades es un muy mal consejo. No hagas eso.
    • Por qué ?? Por favor, elaborada ..
    • No ha proporcionado sus razones sobre por qué «pensar» que no es bueno, simplemente decir que no es en absoluto suficiente y no prueba nada.
    • Que no cambie la codificación que se utiliza para leer a través de java.util.Properties de la API.
    • Mis colegas han fijado allí el archivo de propiedades para UTF-8 y no tienen ese comportamiento. También me dijo que yo debería hacer el ajuste.
    • Amigo, que todos juntos una historia diferente y no es el punto aquí. Aquí OP que quiere saber sobre el Eclipse de la pantalla y cómo Eclipse almacena y lee archivos para mostrar en ella. Ahora bien, si algunos de Java o de otras API quiere leer a continuación, es necesario tener un mecanismo para manejar la situación. Por ejemplo, si usted está utilizando ResourceBundle a leer a continuación, usted puede necesitar para crear y utilizar una costumbre ResourceBundle.Control clase que puede ser utilizado con un resourcebundle para leer las propiedades de cualquier sistema de codificación.
    • Este fue ningún lugar cubierto en la respuesta y por lo tanto induce a error a los OP y una gran cantidad de titulares. Si usted lo sabía de antemano, que no había de haber formulado la respuesta en su forma actual ni ignorante han empujado lejos el problema, «pero sus colegas lo hicieron». Por otra parte, aún no se ha resuelto OP problema concreto.
    • Los que resuelve y hay muchos foros y blogs que habla acerca del mismo. Lea aquí eclipse.org/forums/index.php/t/24647 .. En los viejos tiempos había otras soluciones, como la configuración a través de eclipse.ini archivo, etc., pero creo que con Eclipse 3 o así, esta característica fue introducida para tener un control más fino .. Lo que usted está hablando es de la derecha, pero los contextos son diferentes .. Aquí estamos hablando acerca de Eclipse contexto y no de Java o algún otro contexto ..
    • Compañero, a ver si mi más reciente edición de respuesta ayuda a usted.
    • Solución 1 trabajó para mí en la actualidad, gracias.
    • Me alegro de que te ayudaron, gracias por dejarme saber.
    • Nota: en JAVA9 el UTF-8 es ahora el valor predeterminado de las propiedades de docs.oracle.com/javase/9/intl/… – pero puede que tenga que configurar eclipse específicamente.

  2. 2

    Los Archivos De Propiedades se espera que ISO-8859-1 (Latin-1) codificados.
    Lo más probable que lo eclipse se establece por defecto así.

    Usted tiene que asegurarse de que cada herramienta que se ejecuta en la construcción o lo que sea hace caso omiso de la especificación y usa UTF-8 en lugar.

    • Pero hay también ä, ü y ö en el archivo, que no son reemplazados. Por qué los que no son reemplazados? ¿Cómo debo encontrar la configuración que causa este problema? Qué debo buscar en todos Eclipse configuración y, además, para cada plugin de Eclipse para encontrar el ajuste incorrecto?
    • Mi conjetura es que una herramienta de (tal vez una acción de guardar?) las actualizaciones solo las líneas que de alguna manera están tocados. Pero será difícil encontrar al culpable.
    • Pero hay líneas cambiado, que no he tocado.
    • \uFFFDes un Java carácter de escape. Regular ISO-8859-1 archivos codificados de no usar este tipo de escape. Por lo tanto debe ser el editor que uso. Asegúrese de que usted no está utilizando el «Archivo de Propiedades con el Editor» en Eclipse o similar de una herramienta externa.
    • Latin-1 tiene algunos caracteres acentuados.
    • tal vez, pero en el archivo de propiedades que he mensaje que ä y con \uFFFD\uFFFD y algunos ä son reemplazados por \uFFFD\uFFFD y algunos no.
    • Que editor de archivos se debe utilizar en Eclipse para editar las propiedades de los archivos?
    • cambie el proyecto de la codificación a UTF-8 y, a continuación, utilizar el estándar de «Editor de Texto» (ver menú contextual del archivo -> «Abrir Con». O uso de un Editor externo, como el Bloc de notas++
    • Donde puedo hacer que: «cambiar el proyecto de la codificación a UTF-8»? Si miro en las propiedades del proyecto, entonces no es ya «UTF-8» de la codificación en el «Recurso» el punto del menú.
    • Abra el menú contextual de su proyecto «Propiedades» -> de la primera página -> «archivo de Texto de codificación»
    • Ya está configurado a «UTF-8».
    • Se cambia: desde java 9 se espera que sea UTF-8 docs.oracle.com/javase/9/intl/…

  3. 1

    Agregar los siguientes argumentos a su eclipse.ini archivo.

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

    Por defecto Eclipse utiliza el formato de codificación recogido por la Máquina Virtual de Java (JVM). También, usted puede configurar el archivo de codificación para utf-8.

    • El JVM utiliza el sistema de codificación y mi sistema utiliza UTF-8 y también de mis propiedades codificación se establece en UTF-8.
    • He solicitado una característica de oracle para eliminar el defecto 8859 de codificación. No hay respuesta aún. vamos a ver si pueden solucionarlo.
  4. 1

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

    Git utiliza raw bytes y no se preocupan por la codificación. El uso de git diff usted puede obtener los caracteres como se muestra aquí. Un ejemplo hay R<C3><BC>ckg<C3><A4>ngig # should be "Rückgängig".

    Como usted puede ver que hay dos gracioso soporte de las cosas que muestra por diéresis. Y en su editor, siempre hay dos \uFFFD para cada diéresis en las líneas que comienzan con +.

    Así que supongo que su UTF-8 editor intenta interpretar el git notación y falla. Esto a su vez conduce a la representación \uFFFD, que básicamente meands que este es el carácter cuyo valor es desconocido o irrepresentable (ver aquí).

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

    • He utilizado set LESSCHARSET UTF-8 en el PESCADO shell y después de que yo también había \uFFFD\uFFFD en lugar de corregir signo.
  5. 0

    ver: un marcador, como FFD (CARÁCTER 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 

Dejar respuesta

Please enter your comment!
Please enter your name here