Error unmappable character 0x81 for encoding windows 1252

Разбор ошибок Java и решение проблем
Содержание

UnsupportedClassVersionError
java: error: release version 5 not supported
unmappable character (0x8F) for encoding windows-1252
Другие статьи о Java

Введение

UnsupportedClassVersionError

Error: A JNI error has occurred, please check your installation and try again
Exception in thread «main» java.lang.UnsupportedClassVersionError: hudson/remoting/Launcher has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)
Agent JVM has terminated. Exit code=1

Эта ошибка часто возникает при использовании

Jenkins

версии 2.357 и выше
с работниками на которых установлена восьмая Java. Проверьте версию Java на хосте работника, если
вы подключаете его напрямую и в

Dockerfile

если вы используете работников в

Docker
что является более новым подходом.

java: error: release version 5 not supported

Эта ошибка говорит о том, что вы используете SDK выше 8 а байткод в
который пытаетесь скомпилировать — версии 5.

После восьмой версии Java байткод пятой версии уже не поддерживается.
Это одна из причин по которой версия 8 считается наиболее
«стабильной»

Я не советую менять SDK на 8, лучше поменять target bytecode.

В

IntelliJ IDEA

это можно сделать следующим образом

File → Settings → Build, Execution, Deployment → Compiler
→ Target bytecode version → 14

14 выбирать не обязательно, но вам явно будет нужно что-то выше 5

error: unmappable character (0x8F) for encoding windows-1252

Если у вас в коде комментарии на русском и при компиляции появляется

error: unmappable character (0x8F) for encoding windows-1252

Похожие статьи

Программирование на Java
Установка Java
Intellij
Компиляция и запуск Java кода
final
switch
Определить тип переменной
Генератор случайных чисел
Импорт из других классов
Ошибки
Maven
JUnit

Konstantin Valeev

Как правильно компилировать код с кириллицей? У меня при компиляции возникает error: unmappable character for encoding Cp1252, пробовал добавлять -encoding=»UTF-8″ — javac не принимает параметр.

Сергей Алексеенко

Здравствуйте.

Было бы хорошо увидеть пример того, что Вы пытаетесь скомпилировать.

Java нормально работает с кириллицей, как с текстом. А вот код должен быть обязательно латиницей. Попробуйте сменить кодировку файла, который пытаетесь скомпилировать, в редакторе, до того как скормите его javac-у.


0

Konstantin Valeev

Компилирую код, который вы приложили к уроку, ничего кроме:

public class Car {
    static int speed;

    public static void main(String... args) {
        Car ta4ka = new Car();

        System.out.println("speed в хипе при создании объекта = " + ta4ka.speed); // 0

        ta4ka.setSpeed(12); // Вызываем конкретную функцию(метод) из новосозданого объекта
                            // Значение хранится в фрейме в переменной newSpeed
    }

    public void showSpeed() {    // выводит значение из хипа по ссылке this
        System.out.println("speed в хипе на момент вызова 'showSpeed()' = " + this.speed);
    }

    public void setSpeed(int newSpeed) { // принимаем значение 12. newSpeed это переменная объявленная внутри метода --> хранится в стеке фрейма метода

        this.speed = newSpeed; // записываем по this-ссылке в хип значение из стека метода setSpeed
        showSpeed();// выводим на экран значение из хипа // 12

        newSpeed = 8;// записали новое значение в стеке в фрейме метода setSpeed

        System.out.println("переменная newSpeed в фрейме метода setSpeed в стеке = " + newSpeed); // 8

        // присваиваем переменной speed новое значение = 3
        speed = 3; // В стеке нет такой переменной, потому значение будет записано в хип!
        System.out.println("Java сама добавила this перед именем 'speed' и записала новое значение speed в хип = " + this.speed); // 3

        setSetSpeed(newSpeed); // передаем значение newSpeed = 8

    }

    public void setSetSpeed(int speed) { // теперь и только теперь и в фрейме метода setSetSpeed в стеке есть своя переменная c именем speed!

        System.out.println("Значение speed в хипе = " + this.speed); // 3

        speed = speed;//в стеке speed сама себя переприсваивает.
        System.out.println("переменная speed в фрейме стека = " + speed); // 8

        this.speed = speed; // присваиваем значение speed из фрейма значению speed в хипе!
        System.out.println("Значение speed в хипе заданое уже методом setSetSpeed = " + this.speed); // показываем speed из хипа. // 8
    }
}

Sublime пишет что кодировка UTF-8.


0

Сергей Алексеенко

У меня этот код компилится и под Windows и под Ubuntu.

А какая версия ОС у вас (какого года)? Какая версия java, javac?


0

Konstantin Valeev

Microsoft Windows 10 Enterprise
10.0.17763 N/A Build 17763

java version «1.8.0_221»
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

javac 1.8.0_221


0

Сергей Алексеенко

Что ж.

Это определенно проблема в самой операционной системе.

Скорее всего в настройках региональных стандартов нужно выставить «язык программ, не поддерживающих Юникод» с Английского на Русский. Но придется менять язык системы.

Есть возможность исправить проблему кодировки через реестр:

Запускаем regedit (Win + R —> regedit) и по пути HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsCodePage находим ключ ACP в котором нужно поменять значение (value data) с 1252 на 1251.

Потребуется перезагрузка системы.

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


0

Konstantin Valeev

Компьютер рабочий, прав на такое нет. Если убрать все русские комментарии — код компилируется.
Проблема понятна, спасибо!


0

Андрей Абрашкин

Сергей Алексеенко, у меня в реестре всё так, как вы рекомендуете и в настройках региональных стандартов тоже, однако проблему это не решает. Ошибка есть.


0

Андрей Абрашкин

Не знаю, в чём было дело, но конкретно в моём случае, компилятору не нравилась заглавная буква И. Причем не важно, в каком месте я её ставлю. Исправил на маленькую «и» и всё скомпилировалось.


0

Сергей Алексеенко

Очевидно javac ничего не знает про «и» в верхнем регистре в UTF-8. И этот баг с буквой «И» я не смог победить в javac.

Но нашел еще два способа как обойти в общем проблему с кодировкой:

1) Создать в Sublime текстовый файл в нужной кодировке, а потом туда скопировать код. Как создать: New File, потом file —> Save vith Encoding и сохраняем файл в нужной кодировке. И только потом копируем код в этот сохраненный файл. Сохраняем после копирования. Тестируем.
2) Зайти в настройки региональных стандартов и нажать там одну галочку: скрин настроек.

В результате применения второго способа у меня пропала козябра в WindowsPowerShell, при исполнении данного кода.
Побочных ефектов в других программах я пока не заметил.


0

Андрей Абрашкин

Сергей Алексеенко, первый способ — это самое первое, что я попробовал, но, к сожалению, не помогло. А вот крыж из второго способа, видимо, из 10ки, на win7 отсутствует. Спасибо за советы! Впервые вижу столь оперативную обратную связь)


1

Сергей Алексеенко

Андрей Абрашкин, первый способ тоже должен работать. Нужно внимательно произвести описанные действия. Там важно сохранять файл на каждом этапе. Можно еще включить отображение кодировок в Sublime: в настройках пользователя добавить «show_encoding»: true. И ни в коем случае не впечатывать туда «И». ))


0

Андрей Абрашкин

Сергей Алексеенко, ааа, не впечатывать «И»))) Тогда да, тогда сорри, недопонял, тогда всё работает! Без «И»)) Честно говоря, Sublime мне как-то не зашёл… Давно правда это было. Может сейчас изменится мнение, но я пока на Notepad++ и AkelPad сижу. В Npp вкладки и подсветка синтаксиса. В AkelPad удобство смены кодировки и работы с текстом больших размеров. Надо бы снова присмотреться к Sublime…


0

в настоящее время я работаю на 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>


поместите эту строку в файл 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

91 / 85 / 27

Регистрация: 29.10.2016

Сообщений: 928

1

20.05.2020, 19:34. Показов 9468. Ответов 6


Добрый вечер, при компиляции java файла в консоли бьет ошибку java:38: error: unmappable character for encoding Cp1251. Если запускать проект через IDE, в моем случае netbeans, все работает нормально. В чем проблема может быть?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Нарушитель

Эксперт PythonЭксперт Java

14040 / 8228 / 2485

Регистрация: 21.10.2017

Сообщений: 19,708

20.05.2020, 21:29

2

В кодировке.
Ваш кэп.



0



91 / 85 / 27

Регистрация: 29.10.2016

Сообщений: 928

20.05.2020, 22:29

 [ТС]

3

iSmokeJC, ну кодировка файла utf8, а какая нужна?



0



Нарушитель

Эксперт PythonЭксперт Java

14040 / 8228 / 2485

Регистрация: 21.10.2017

Сообщений: 19,708

20.05.2020, 22:38

4

6elka1703, ну в ошибке же написано.
В cmd что-то навроде chcp 65001 для utf-8. Попробуй



0



91 / 85 / 27

Регистрация: 29.10.2016

Сообщений: 928

20.05.2020, 22:50

 [ТС]

5

iSmokeJC, попробовать что, кодировку сменить? Если да то как это сделать?



0



Нарушитель

Эксперт PythonЭксперт Java

14040 / 8228 / 2485

Регистрация: 21.10.2017

Сообщений: 19,708

20.05.2020, 23:01

6

Лучший ответ Сообщение было отмечено 6elka1703 как решение

Решение

В cmd набрать chcp 65001



0



91 / 85 / 27

Регистрация: 29.10.2016

Сообщений: 928

21.05.2020, 17:58

 [ТС]

7

iSmokeJC, сработало, правда я не понимаю какая разница jvm какая кодировка стоит, ну выводил бы он мне кракозябры ну и ладно, но не давать скомпилировать класс этого я не понимаю



0



Понравилась статья? Поделить с друзьями:
  • Error unknown worker error перевод
  • Error unknown wim esd file
  • Error windows route add command failed adaptive returned error code
  • Error windows kernel power
  • Error windows 10 0x800f081f windows