advertencia de "carácter imperceptible para codificar" en Java


Actualmente estoy trabajando en un proyecto Java que emite la siguiente advertencia cuando compilo:

/src/com/myco/apps/AppDBCore.java:439: warning: unmappable character for encoding UTF8
    [javac]         String copyright = "� 2003-2008 My Company. All rights reserved.";

No estoy seguro de cómo se renderizará el carácter antes de la fecha, pero debería ser un símbolo de copyright, y se muestra en la advertencia como un signo de interrogación en un diamante.

Vale la pena señalar que el carácter aparece en el artefacto de salida correctamente, pero las advertencias son una molestia y el archivo que contiene esta clase puede un día ser tocado por un editor de texto que guarda la codificación incorrecta...

¿Cómo puedo inyectar este carácter en la cadena "copyright" para que el compilador esté satisfecho y el símbolo se conserve en el archivo sin posibles problemas de recodificación?

Author: seanhodges, 2009-01-21

10 answers

Utilice el formato de escape "\uxxxx".

De acuerdo con Wikipedia , el símbolo de copyright es unicode U + 00A9 por lo que su línea debe decir:

String copyright = "\u00a9 2003-2008 My Company. All rights reserved.";
 49
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-21 11:20:51

Pruebe con: javac-codificando ISO-8859-1 nombre de archivo.java

 86
Author: Fernando Nah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-24 20:59:58

Si está utilizando Maven, establezca el <encoding> explícitamente en la configuración del complemento del compilador, por ejemplo,

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
 38
Author: Thomas Leonard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-28 14:27:35

Esto me ayudó:

Todo lo que necesita hacer, es especificar una variable envirnoment llamada JAVA_TOOL_OPTIONS. Si establece esta variable en-Dfile.codificación = UTF8, cada vez que se inicia una JVM, recogerá esta información.

Fuente: http://whatiscomingtomyhead.wordpress.com/2012/01/02/get-rid-of-unmappable-character-for-encoding-cp1252-once-and-for-all/

 28
Author: nightlyop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-13 13:28:49

Ponga esta línea en el archivo yor .gradle por encima de la conf de Java.

apply plugin: 'java'
compileJava {options.encoding = "UTF-8"}   
 17
Author: Alobes5,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-13 23:03:22

La mayoría de las veces este error de compilación se produce cuando el archivo unicode (codificado en UTF-8) compila

javac -encoding UTF-8 HelloWorld.java

Y también puede agregar esta opción de compilación a su IDE ejemplo: Intellij idea
(Archivo>configuración>Compilador Java) agregar como parámetro adicional de línea de comandos

introduzca la descripción de la imagen aquí

-codificación: codificación Establezca el nombre de codificación del archivo de origen, como EUC-JP y UTF-8.. Si no se especifica-encoding, se utiliza el convertidor predeterminado de la plataforma. (DOC )

 5
Author: Alupotha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-05 06:17:35

Esto funcionó para mí -

    <?xml version="1.0" encoding="utf-8" ?>
<project name="test" default="compile">
    <target name="compile">
        <javac srcdir="src" destdir="classes" 
                           encoding="iso-8859-1" debug="true" />
    </target>
</project>
 2
Author: Dxx0,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-30 01:53:52

Si usas eclipse (Eclipse puede poner código utf8 para ti incluso si escribes carácter utf8. Verá el carácter utf8 normal cuando programe, pero el fondo será el código utf8);

  1. Seleccionar Proyecto
  2. Haga clic derecho y seleccione Propiedades
  3. Seleccione Resourceen Resource Panel (Parte superior del menú derecho que se abrió después de 2.)
  4. Se puede ver en el Panel de recursos , Codificación del archivo de texto, seleccione otro que want

P. S: esto estará bien si tiene un valor estático en el código. Por ejemplo, String test = "iiiiiıııııççççç";

 1
Author: baybora.oren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-07 07:56:16

Tuve el mismo problema, donde el índice de caracteres reportado en el mensaje de error de Java era incorrecto. Lo reduje a los caracteres de comillas dobles justo antes de que la posición reportada fuera hexadecimal 094 (cancelar en lugar de citar, pero representado como una cita) en lugar de hexadecimal 022. Tan pronto como cambié por la variante hex 022 todo estaba bien.

 1
Author: Kelvin Goodson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-22 12:14:13

Si uno está usando Maven Build desde el símbolo del sistema, también puede usar el siguiente comando:

                    mvn -Dproject.build.sourceEncoding=UTF-8
 1
Author: 5122014009,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-24 15:06:15