предупреждение" 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 ответов


используйте формат 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/


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

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

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

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. вы можете ознакомиться в Панель Ресурсов, Кодировка Текстового Файла, выберите другой, который вам нужен

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


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


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

                    mvn -Dproject.build.sourceEncoding=UTF-8