предупреждение" 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.";
Если вы используете 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, он будет получать эту информацию.
поместите эту строку в файл 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) добавить в качестве дополнительного параметра командной строки
-кодировка : кодировка Задайте имя кодировки исходного файла, например 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);
- выберите проект
- щелкните правой кнопкой мыши и выберите свойства
- выберите ресурс on Панель Ресурсов(вверху правого меню, которое открылось после 2.)
- вы можете ознакомиться в Панель Ресурсов, Кодировка Текстового Файла, выберите другой, который вам нужен
П. С. : это будет хорошо, если вы статическое значение в коде. Например, String test = "IIIIIııııııççççç";
У меня была та же проблема, где индекс символов, сообщенный в сообщении об ошибке java, был неправильным. Я сузил его до символов двойной кавычки непосредственно перед сообщаемой позицией, являющейся шестнадцатеричной 094 (отмена вместо кавычки, но представленная как цитата) вместо шестнадцатеричной 022. Как только я поменялся на вариант hex 022, все было в порядке.
Если используется сборка Maven из командной строки, можно также использовать следующую команду:
mvn -Dproject.build.sourceEncoding=UTF-8