Unmappable character 0x98 for encoding windows 1251 что это

Обновлено: 08.07.2024

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также: