предупреждение "unmappable character for encoding" в Java


в настоящее время я работаю на Java-проект, который выдает следующее предупреждение при компиляции:

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

Я не уверен, как так будет отображаться символ до даты, но он должен быть символом авторских прав и отображается в предупреждении как знак вопроса в алмазе.

стоит отметить, что символ отображается в выходном артефакте правильно, но предупреждения являются помехой, и файл, содержащий этот класс, может однажды быть затронут текстом редактор, который сохраняет кодировку неправильно...

Как я могу ввести этот символ в строку" copyright", чтобы компилятор был доволен, и символ сохраняется в файле без потенциальных проблем с перекодировкой?

10 95

10 ответов:

используйте escape-формат "\uxxxx".

по данным Википедия, символ авторского права-unicode U + 00A9, поэтому ваша строка должна гласить:

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

попробовать с: javac-кодировка ISO-8859 - 1 имя_файла.java

Если вы используете Maven, установить <encoding> явно в конфигурации плагина компилятора, например,

<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>

Это помогло мне:

все, что вам нужно сделать, это указать переменную envirnoment называется JAVA_TOOL_OPTIONS. Если вы установите для этой переменной значение-Dfile.кодировка=utf8 в, каждый раз, когда запускается JVM, он будет собирать эту информацию.

Источник: http://whatiscomingtomyhead.wordpress.com/2012/01/02/get-rid-of-unmappable-character-for-encoding-cp1252-once-and-for-all/

поместите эту строку в ваш файл .gradle над Java conf.

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

в большинстве случаев эта ошибка компиляции возникает при компиляции файла unicode (UTF-8 encoded)

javac -encoding UTF-8 HelloWorld.java

и Вы можете добавить этот пункт к вашей IDE пример: Intellij idea
(Файл>настройки>Java-компилятор) добавить в качестве дополнительного параметра командной строки

enter image description here

-кодировка : кодировка Задайте имя кодировки исходного файла, например EUC-JP и UTF-8.. Если параметр-encoding не указан, то по умолчанию используется конвертер платформы используемый. (DOC)

это сработало для меня -

    <?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>

Если вы используете eclipse (Eclipse может поставить код utf8 для вас даже вы пишете символ utf8. Вы увидите нормальный символ utf8 при программировании, но фон будет код utf8);

  1. выберите проект
  2. щелкните правой кнопкой мыши и выберите свойства
  3. выберите ресурс on Панель Ресурсов(вверху правого меню, которое открывается после 2.)
  4. вы можете ознакомиться в Панель Ресурсов, Кодировка Текстового Файла, выберите другой, который вам нужен

P. S: это будет хорошо, если вы статическое значение в коде. Например String test = "IIIIIııııııççççç";

У меня была та же проблема, где индекс символов, указанный в сообщении об ошибке java, был неправильным. Я сузил его до символов двойной кавычки непосредственно перед сообщенной позицией, являющейся hex 094 (отмена вместо цитаты, но представленная как цитата) вместо hex 022. Как только я поменялся на вариант hex 022, все было в порядке.

Если вы используете Maven Build из командной строки, вы также можете использовать следующую команду:

                    mvn -Dproject.build.sourceEncoding=UTF-8