В настоящее время я работаю над Java-проектом, который при компиляции выдает следующее предупреждение:
/src/com/myco/apps/AppDBCore.java:439: warning: unmappable character for encoding UTF8
[javac] String copyright = "� 2003-2008 My Company. All rights reserved.";
Я не уверен, как SO отобразит символ до даты, но это должен быть символ авторского права и отображаться в предупреждении в виде вопросительного знака в ромбе.
Стоит отметить, что символ отображается в выходном артефакте правильно, но предупреждения являются помехой, и файл, содержащий этот класс, может однажды быть затронут текстовым редактором, который неправильно сохраняет кодировку ...
Как я могу вставить этот символ в строку «авторских прав», чтобы компилятор был доволен и символ сохранился в файле без потенциальных проблем с перекодированием?
hexdump AppDBCore.java
я как-то сомневаюсь в этом,\u00a9
и вместо этого это что-то, что работает частично для вас из-за настройки вашей системы. Знак вопроса выше используется для замены входящего символа, значение которого неизвестно или невозможноОтветы:
Используйте escape-формат «\ uxxxx».
Согласно Википедии , символом авторского права является unicode U + 00A9, поэтому ваша строка должна читать:
источник
Попробуйте: javac -encoding ISO-8859-1 имя_файла.java
источник
<compilerarg line="-encoding utf-8"/>
соответствующий<javac>
вызовBuild.xml
. Это плохой способ сделать это, но у вас нет выбора. Смотрите мой длинный комментарий вверху.Если вы используете Maven, установите
<encoding>
явно в конфигурации плагина компилятора, напримеристочник
project.build.sourceEncoding
свойство.Мне это помогло:
Источник: http://whatiscomingtomyhead.wordpress.com/2012/01/02/get-rid-of-unmappable-character-for-encoding-cp1252-once-and-for-all/
источник
javac MyJavaFile.java -encoding utf-8 -cp .;lib\*
затем при ее запуске мне не нужно было добавлять эту дополнительную часть кодирования.поместите эту строку в свой файл .gradle над Java conf.
источник
compileTestJava
иjavadoc
аВ большинстве случаев эта ошибка компиляции возникает при компиляции файла в кодировке unicode (кодировка UTF-8).
а также вы можете добавить этот параметр компиляции в свою среду IDE ex: Intellij idea
(Файл> Настройки> Компилятор Java) добавить в качестве дополнительного параметра командной строки
источник
Шаги Gradle
Если вы используете Gradle, вы можете найти строку, которая применяет плагин java:
Затем установите кодировку для задачи компиляции UTF-8:
Если у вас есть модульные тесты, вы, вероятно, захотите скомпилировать их и с UTF-8:
Общий пример Gradle
Это означает, что общий код Gradle будет выглядеть примерно так:
источник
Это сработало для меня -
источник
Если вы используете eclipse (Eclipse может поместить для вас код utf8, даже если вы пишете символ utf8. Вы увидите нормальный символ utf8 при программировании, но фон будет кодом utf8);
PS: это будет нормально, если вы статическое значение в коде. Например, String test = "İİİİİııııııççççç";
источник
У меня была такая же проблема, когда индекс символа, указанный в сообщении об ошибке Java, был неверным. Я сузил его до символов двойных кавычек непосредственно перед тем, как сообщаемая позиция была шестнадцатеричной 094 (отмена вместо кавычки, но представлена как кавычка) вместо шестнадцатеричного 022. Как только я поменял местами на шестнадцатеричный вариант 022, все было в порядке.
источник
Если вы используете Maven Build из командной строки, вы также можете использовать следующую команду:
источник
Тем, кто задается вопросом, почему это происходит в некоторых системах, а не в других (с тем же источником, параметрами сборки и т. Д.), Проверьте
LANG
переменную среды . Я получаю предупреждение / ошибку, когдаLANG=C.UTF-8
, но не когдаLANG=en_US.UTF-8
.источник