Aviso “caractere não mapeável para codificação” em Java

Atualmente estou trabalhando em um projeto Java que está emitindo o seguinte aviso quando eu compilar:

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

Eu não tenho certeza como isso vai renderizar o personagem antes da data, mas deve ser um símbolo de direitos autorais, e é exibido no aviso como um ponto de interrogação em um diamante.

Vale a pena notar que o caractere aparece no artefato de saída corretamente, mas os avisos são um incômodo e o arquivo que contém essa class pode um dia ser tocado por um editor de texto que salva a codificação incorretamente …

Como posso injetar esse caractere na string “copyright” para que o compilador fique feliz e o símbolo seja preservado no arquivo sem possíveis problemas de recodificação?

Use o formato de escape “\ uxxxx”.

De acordo com a Wikipedia , o símbolo de copyright é unicode U + 00A9, então sua linha deve ler:

 String copyright = "\u00a9 2003-2008 My Company. All rights reserved."; 

Tente com: javac -coding ISO-8859-1 file_name.java

Se você estiver usando o Maven, defina o explicitamente na configuração do plugin do compilador, por exemplo

    org.apache.maven.plugins maven-compiler-plugin 2.3.2  UTF-8   

Isso me ajudou:

Tudo o que você precisa fazer é especificar uma variável de ambiente chamada JAVA_TOOL_OPTIONS. Se você configurar essa variável para -Dfile.encoding = UTF8, toda vez que uma JVM for iniciada, ela coletará essas informações.

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

coloque essa linha no seu arquivo .gradle acima do conf Java.

 apply plugin: 'java' compileJava {options.encoding = "UTF-8"} 

Na maioria das vezes, esse erro de compilation ocorre quando a compilation de arquivos unicode (codificada em UTF-8)

 javac -encoding UTF-8 HelloWorld.java 

e também Você pode adicionar esta opção de compilation ao seu IDE ex: Intellij idea
(Arquivo> configurações> Compilador Java) adicionar como parâmetro de linha de comando adicional

insira a descrição da imagem aqui

-encoding: codificação Configura o nome da codificação do arquivo de origem, como EUC-JP e UTF-8. Se a codificação não for especificada, o conversor padrão da plataforma será usado. ( DOC )

Isso funcionou para mim –

        

Se você usar o eclipse (o Eclipse pode colocar o código utf8 para você, mesmo que você escreva o caractere utf8. Você verá o caractere utf8 normal ao programar, mas o segundo plano será o código utf8);

  1. Selecione o projeto
  2. Clique com o botão direito e selecione Propriedades
  3. Selecione Recurso no Painel de Recursos (menu superior direito que abriu depois de 2.)
  4. Você pode ver no painel de resources , codificação de arquivo de texto , selecione outro que você deseja

PS: isso vai ok se você valor estático no código. Por exemplo String test = “İİİİİııııııççççç”;

Eu tive o mesmo problema, onde o índice de caracteres relatado na mensagem de erro java estava incorreto. Eu reduzi-a aos caracteres de aspas duplas logo antes da posição relatada ser hexadecimal 094 (cancelar em vez de citar, mas representada como uma citação) em vez de hexadecimal 022. Assim que eu troquei pela variante hex 022 tudo estava bem.

Se alguém estiver usando o Maven Build a partir do prompt de comando, também poderá usar o seguinte comando:

  mvn -Dproject.build.sourceEncoding=UTF-8