Java error unmappable character for encoding cp1251

I'm currently working on a Java project that is emitting the following warning when I compile: /src/com/myco/apps/AppDBCore.java:439: warning: unmappable character for encoding UTF8 [javac] ...

I’m currently working on a Java project that is emitting the following warning when I compile:

/src/com/myco/apps/AppDBCore.java:439: warning: unmappable character for encoding UTF8
    [javac]         String copyright = "� 2003-2008 My Company. All rights reserved.";

I’m not sure how SO will render the character before the date, but it should be a copyright symbol, and is displayed in the warning as a question mark in a diamond.

It’s worth noting that the character appears in the output artifact correctly, but the warnings are a nuisance and the file containing this class may one day be touched by a text editor that saves the encoding incorrectly…

How can I inject this character into the «copyright» string so that the compiler is happy, and the symbol is preserved in the file without potential re-encoding issues?

asked Jan 21, 2009 at 11:17

seanhodges's user avatar

1

Try with:
javac -encoding ISO-8859-1 file_name.java

answered Oct 24, 2009 at 20:59

Fernando Nah's user avatar

Fernando NahFernando Nah

1,0211 gold badge7 silver badges2 bronze badges

7

Use the «uxxxx» escape format.

According to Wikipedia, the copyright symbol is unicode U+00A9 so your line should read:

String copyright = "u00a9 2003-2008 My Company. All rights reserved.";

answered Jan 21, 2009 at 11:20

Jon Skeet's user avatar

Jon SkeetJon Skeet

1.4m851 gold badges9045 silver badges9133 bronze badges

7

If you’re using Maven, set the <encoding> explicitly in the compiler plugin’s configuration, e.g.

<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>

answered May 28, 2012 at 14:27

Thomas Leonard's user avatar

Thomas LeonardThomas Leonard

7,0182 gold badges36 silver badges40 bronze badges

3

put this line in yor file .gradle above the Java conf.

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

answered Sep 13, 2015 at 23:03

Alobes5's user avatar

Alobes5Alobes5

4635 silver badges8 bronze badges

1

Most of the time this compile error comes when unicode(UTF-8 encoded) file compiling

javac -encoding UTF-8 HelloWorld.java

and also You can add this compile option to your IDE
ex: Intellij idea
(File>settings>Java Compiler) add as additional command line parameter

enter image description here

-encoding : encoding
Set the source file encoding name, such as EUC-JP and UTF-8.. If -encoding is not specified, the platform default converter is used. (DOC)

answered Apr 5, 2015 at 6:17

Alupotha's user avatar

AlupothaAlupotha

9,5304 gold badges46 silver badges48 bronze badges

Gradle Steps

If you are using Gradle then you can find the line that applies the java plugin:

apply plugin: 'java'

Then set the encoding for the compile task to be UTF-8:

compileJava {options.encoding = "UTF-8"}   

If you have unit tests, then you probably want to compile those with UTF-8 too:

compileTestJava {options.encoding = "UTF-8"}

Overall Gradle Example

This means that the overall gradle code would look something like this:

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

answered Oct 21, 2018 at 10:42

Luke Machowski's user avatar

Luke MachowskiLuke Machowski

3,8252 gold badges31 silver badges28 bronze badges

This worked for me:

<?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>

Yuri's user avatar

Yuri

4,0681 gold badge25 silver badges44 bronze badges

answered Apr 30, 2017 at 1:53

Dxx0's user avatar

For those wondering why this happens on some systems and not on others (with the same source, build parameters, and so on), check your LANG environment variable. I get the warning/error when LANG=C.UTF-8, but not when LANG=en_US.UTF-8.

answered Apr 14, 2020 at 19:07

jakar's user avatar

jakarjakar

1,0211 gold badge10 silver badges22 bronze badges

If you use eclipse (Eclipse can put utf8 code for you even you write utf8 character. You will see normal utf8 character when you programming but background will be utf8 code) ;

  1. Select Project
  2. Right click and select Properties
  3. Select Resource on Resource Panel(Top of right menu which opened after 2.)
  4. You can see in Resource Panel, Text File Encoding, select other which you want

P.S : this will ok if you static value in code. For Example String test = «İİİİİııııııççççç»;

answered Dec 7, 2009 at 7:56

bora.oren's user avatar

bora.orenbora.oren

3,4043 gold badges33 silver badges31 bronze badges

2

I had the same problem, where the character index reported in the java error message was incorrect. I narrowed it down to the double quote characters just prior to the reported position being hex 094 (cancel instead of quote, but represented as a quote) instead of hex 022. As soon as I swapped for the hex 022 variant all was fine.

answered Jun 22, 2010 at 12:14

Kelvin Goodson's user avatar

0

If one is using Maven Build from the command prompt one can use the following command as well:

                    mvn -Dproject.build.sourceEncoding=UTF-8

answered Jun 24, 2015 at 15:06

5122014009's user avatar

51220140095122014009

3,5926 gold badges24 silver badges34 bronze badges

Can’t compile your project in NetBeans, here is the error:

------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------
Total time: 4.094s
Finished at: Sat Nov 17 00:23:08 MSK 2012
Final Memory: 8M/247M
------------------------------------------------------------------------
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project AdminCmd: Compilation failure
C:UsersМаксимDocumentsNetBeansProjectsAdminCmdsrcmainjavabeBalorToolsHelpStringACMinecraftFontWidthCalculator.java:[30,33] error: unmappable character for encoding Cp1251
-> [Help 1]

To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.

For more information about the errors and possible solutions, please read the following articles:
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

here’s the file maven on that swears

http://pastebin.com/buQEE4Fb

Project to Git — https://github.com/Belphemur/AdminCmd

If someone could put a working draft of NetBeans or Eclipse!

Cœur's user avatar

Cœur

36.4k25 gold badges191 silver badges259 bronze badges

asked Nov 16, 2012 at 20:26

a225892's user avatar

This is interesting, as your pom.xml mentions

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

.. but the error message complains about Cp1251 encoding. Does the maven output mention anything else related to source encodings?

My recommendation is generally to not use any high-ASCII characters in your code, and use the uxxxx notation instead as needed.

You can make the conversion from UTF-8 to escaped unicode at online conversion sites like http://www.endmemo.com/convert/EMUnicode.php (this particular one seems to strip leading zeroes, I don’t think that’s legal in Java)

answered Nov 16, 2012 at 20:39

Arnout Engelen's user avatar

Arnout EngelenArnout Engelen

6,5041 gold badge24 silver badges35 bronze badges

1

In my case I resolved that problem by setting new environment variable:

JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8

In the command line executing maven, run current command before executing maven command:

SET JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8

answered Aug 18, 2020 at 17:52

Maqsud Erjonov's user avatar

You have characters in that file which are likely not mapped in the Windows codepage (which is the reference to Cp1251). Try changing the project encoding to UTF-8 or similar. Look into different encoding schemes.

answered Nov 16, 2012 at 20:39

Thorn G's user avatar

Thorn GThorn G

12.5k2 gold badges42 silver badges54 bronze badges

1

I’m currently working on a Java project that is emitting the following warning when I compile:

/src/com/myco/apps/AppDBCore.java:439: warning: unmappable character for encoding UTF8
    [javac]         String copyright = "� 2003-2008 My Company. All rights reserved.";

I’m not sure how SO will render the character before the date, but it should be a copyright symbol, and is displayed in the warning as a question mark in a diamond.

It’s worth noting that the character appears in the output artifact correctly, but the warnings are a nuisance and the file containing this class may one day be touched by a text editor that saves the encoding incorrectly…

How can I inject this character into the «copyright» string so that the compiler is happy, and the symbol is preserved in the file without potential re-encoding issues?

asked Jan 21, 2009 at 11:17

seanhodges's user avatar

1

Try with:
javac -encoding ISO-8859-1 file_name.java

answered Oct 24, 2009 at 20:59

Fernando Nah's user avatar

Fernando NahFernando Nah

1,0211 gold badge7 silver badges2 bronze badges

7

Use the «uxxxx» escape format.

According to Wikipedia, the copyright symbol is unicode U+00A9 so your line should read:

String copyright = "u00a9 2003-2008 My Company. All rights reserved.";

answered Jan 21, 2009 at 11:20

Jon Skeet's user avatar

Jon SkeetJon Skeet

1.4m851 gold badges9045 silver badges9133 bronze badges

7

If you’re using Maven, set the <encoding> explicitly in the compiler plugin’s configuration, e.g.

<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>

answered May 28, 2012 at 14:27

Thomas Leonard's user avatar

Thomas LeonardThomas Leonard

7,0182 gold badges36 silver badges40 bronze badges

3

put this line in yor file .gradle above the Java conf.

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

answered Sep 13, 2015 at 23:03

Alobes5's user avatar

Alobes5Alobes5

4635 silver badges8 bronze badges

1

Most of the time this compile error comes when unicode(UTF-8 encoded) file compiling

javac -encoding UTF-8 HelloWorld.java

and also You can add this compile option to your IDE
ex: Intellij idea
(File>settings>Java Compiler) add as additional command line parameter

enter image description here

-encoding : encoding
Set the source file encoding name, such as EUC-JP and UTF-8.. If -encoding is not specified, the platform default converter is used. (DOC)

answered Apr 5, 2015 at 6:17

Alupotha's user avatar

AlupothaAlupotha

9,5304 gold badges46 silver badges48 bronze badges

Gradle Steps

If you are using Gradle then you can find the line that applies the java plugin:

apply plugin: 'java'

Then set the encoding for the compile task to be UTF-8:

compileJava {options.encoding = "UTF-8"}   

If you have unit tests, then you probably want to compile those with UTF-8 too:

compileTestJava {options.encoding = "UTF-8"}

Overall Gradle Example

This means that the overall gradle code would look something like this:

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

answered Oct 21, 2018 at 10:42

Luke Machowski's user avatar

Luke MachowskiLuke Machowski

3,8252 gold badges31 silver badges28 bronze badges

This worked for me:

<?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>

Yuri's user avatar

Yuri

4,0681 gold badge25 silver badges44 bronze badges

answered Apr 30, 2017 at 1:53

Dxx0's user avatar

For those wondering why this happens on some systems and not on others (with the same source, build parameters, and so on), check your LANG environment variable. I get the warning/error when LANG=C.UTF-8, but not when LANG=en_US.UTF-8.

answered Apr 14, 2020 at 19:07

jakar's user avatar

jakarjakar

1,0211 gold badge10 silver badges22 bronze badges

If you use eclipse (Eclipse can put utf8 code for you even you write utf8 character. You will see normal utf8 character when you programming but background will be utf8 code) ;

  1. Select Project
  2. Right click and select Properties
  3. Select Resource on Resource Panel(Top of right menu which opened after 2.)
  4. You can see in Resource Panel, Text File Encoding, select other which you want

P.S : this will ok if you static value in code. For Example String test = «İİİİİııııııççççç»;

answered Dec 7, 2009 at 7:56

bora.oren's user avatar

bora.orenbora.oren

3,4043 gold badges33 silver badges31 bronze badges

2

I had the same problem, where the character index reported in the java error message was incorrect. I narrowed it down to the double quote characters just prior to the reported position being hex 094 (cancel instead of quote, but represented as a quote) instead of hex 022. As soon as I swapped for the hex 022 variant all was fine.

answered Jun 22, 2010 at 12:14

Kelvin Goodson's user avatar

0

If one is using Maven Build from the command prompt one can use the following command as well:

                    mvn -Dproject.build.sourceEncoding=UTF-8

answered Jun 24, 2015 at 15:06

5122014009's user avatar

51220140095122014009

3,5926 gold badges24 silver badges34 bronze badges

Последнее изменение: 17 октября 2012г.

Честно сказать, эта статья тоже из серии «ликбеза» – я считал, что об этом должны знать все.
Практика показывает, что я ошибался. Долго думал, куда бы этот материал добавить – то ли действительно
в статью «Ликбез», то ли в первую часть
«Вавилонского столпотворения». В итоге решил вынести в отдельную статью.

Вавилонское столпотворение. Часть 4. Проза жизни: компиляция и вывод в консоль

Итак, речь у нас пойдет о таких, казалось бы, примитивных процессах, как компиляция и вывод в консоль. Крайне
рекомендую ознакомиться со статьями «Ликбез» и
«Вавилонское столпотворение. Часть 1. Кодировки» – это необходимо для понимания данного
материала. По сложности же кода дальше уровня «Hello, World» мы не пойдем.

Компиляция «в лоб»

Для начала простое упражнение. Возьмите вот этот файл –
HelloWorldUTF8.java – если у вас Windows, и вот этот –
HelloWorldCp866.java – если у вас Linux или Mac. Скомпилируйте и запустите (все команды я привожу
для Windows):

javac -cp . -d . HelloWorldUTF8.java
java -cp . test.HelloWorldUTF8

Надеюсь, вы понимаете, что делают эти команды. Если нет – читайте вот это: «Ликбез».

В свой хрустальный шар я вижу, что в консоли у вас ничего хорошего. Во-первых, под Linux-ом я ожидаю кучу
предупреждений еще на стадии компиляции – 8 штук. Во-вторых, при выполнении у меня (под Windows)
– вот так:

╨Ч╨┤╤А╨░╨▓╤Б╤В╨▓╤Г╨╣, ╨Ь╨╕╤А!

Под Linux должны быть прямоугольнички вместо букв.

Теперь поменяйтесь – возьмите файл, который я предназначил для другой операционки. И то же самое
– скомпилируйте и запустите:

javac -cp . -d . HelloWorldCp866.java
java -cp . test.HelloWorldCp866

Вот так уже намного лучше. К сожалению, не могу ручаться, что в Linux тоже все хорошо, ибо настраивается эта
ОС по-разному. Но при стандартной настройке должен быть виден нормальный русский текст:

Здравствуй, Мир!

Упражнение окончено.

Что можно из него вынести? Основное, что мы увидели – результат компиляции зависит от операционной
системы. Что нас, понятное дело, устраивать не может.

Но и это еще не все. Вот то, что получилось при компиляции (необходимая версия Java – 6.0+): test_windows.zip и test_linux.zip. Запустим это
безобразие на других системах, отличных от той, где они компилировались. Содержимое
test_windows.zip
, запущенное под Linux, дает такой результат:

$ java -cp . test.HelloWorldUTF8
Здравствуй, Мир!
$ java -cp . test.HelloWorldCp866
‡¤а ўбвўг©, ЊЁа!

Ну и код из test_linux.zip под windows дает вот что:

java -cp . test.HelloWorldUTF8
╟фЁртёЄтєщ, ╠шЁ!
java -cp . test.HelloWorldCp866
??????, ???!

То есть – во всех случаях бредятина и ничего похожего на то, что было под другой OС. Никакой
переносимости. Что нас тоже никак не может устраивать.

В общем, ситуация ясна. Имеется проблема. Надо понять, как ее решать. А для этого необходимо понимание
происходящего.

Что происходит?

Для начала я открою страшную тайну. В разных системах используются разные кодировки по умолчанию. В Windows
это Cp1251, в Linux – как правило, UTF-8. Приведенные мной
примеры рассчитаны именно на это.

Второй момент, о котором знает существенно меньшее количество разработчиков. В Windows кодировка
консоли не совпадает с кодировкой системы
! Консоль по историческим причинам имеет кодировку
Cp866, также известную под неофициальными именами DOS и OEM.

Третий момент. Компилятор при разборе исходного кода по умолчанию использует кодировку системы. В Windows
Cp1251, в Linux – UTF-8.

Четвертый момент. Посмотрите на класс java.lang.System, а точнее – на его переменную
java.lang.System.out. Она имеет тип PrintStream. Т.е. –
оперирует байтами. А следовательно, тоже использует какую-то кодировку.

И вот тут-то начинается веселье. Кодировка, используемая при выводе в консоль –
системная
! А вовсе не кодировка консоли, как можно было бы предположить. И если они не совпадают
– жди неприятностей.

Понятно? Тогда вопрос. Почему же при компиляции исходника в Cp866 под Windows и его последующем
исполнении там же мы видим нормальный текст??? Кодировки-то не совпадают!

Отчасти этот факт и побудил меня вообще написать эту статью. Недавно меня на полном серьезе убеждали в одном
из форумов, что для компиляции и нормального вывода в консоль необходимо и достаточно, чтобы исходник был
в кодировке консоли. Более того, как вы только что видели, это вроде бы действительно так. Так?

Нет. И я это сейчас продемонстрирую. Возьмем еще один исходник в Cp866, почувствуем себя
немножко логопедом, отрабатывающим шипящие, и заменим уже набившую оскомину фразу «Здравствуй,
мир!
» на более веселую – «МыШка суШек насуШила!». Вот этот исходник:
HelloWorldCp866_2.java. Как и прежде – компилируем и исполняем
(это уже только под Windows):

javac -cp . -d . HelloWorldCp866_2.java
HelloWorldCp866_2.java:6: warning: unmappable character for encoding Cp1251
        System.out.println("Мы?ка су?ек насу?ила!");
                              ^
HelloWorldCp866_2.java:6: warning: unmappable character for encoding Cp1251
        System.out.println("Мы?ка су?ек насу?ила!");
                                    ^
HelloWorldCp866_2.java:6: warning: unmappable character for encoding Cp1251
        System.out.println("Мы?ка су?ек насу?ила!");
                                            ^
3 warnings

java -cp . test.HelloWorldCp866_2
Мы?ка су?ек насу?ила!

Как вам результат?

Не звучат шипящие у пациента. Причем уже на стадии компиляции. Почему? Ма-а-аленькая подсказка. Код буквы
«Ш» – 0x98. Вам это ничего не напоминает? Мне это напоминает потерявшуюся букву «И» в статье о кодировках. У нее в составе
байтов тоже было значение 0x98.

Догадались, что произошло? Двойная ошибка. Сначала Cp866 читается как системная
Cp1251
. В нижней части они совпадают, так что программный код не повреждается. А вот верхние части
таблицы (выше 127 символов) различаются, и серьезно. В результате символы, которые после компиляции
сохраняются в байт-коде, не имеют ничего общего с тем, что было в исходнике.

Однако при выводе на консоль происходит ровно обратное. Символы с помощью кодировки Cp1251
превращаются в байты. А эти байты соответствуют Cp866. Только поэтому на консоль выводится
правильный текст.

И все было бы замечательно, если бы не отсутствие в Cp1251 символа с кодом 0x98, на
который попадает буква «Ш». Декодер встречает байт 0x98, не находит такого символа
и выдает предупреждение: unmappable character for encoding Cp1251. Буквально –
неотображаемый символ для кодировки Cp1251. А сам символ замещает на «?». Это мы уже
видели. Вот «Ш» и пропала.

И еще более показательна компиляция того же исходника под Linux:

$ javac -cp . -d . HelloWorldCp866_2.java
HelloWorldCp866_2.java:6: warning: unmappable character for encoding UTF8
        System.out.println("�똪� �㘥� ���㘨��!");
                            ^
HelloWorldCp866_2.java:6: warning: unmappable character for encoding UTF8
        System.out.println("�똪� �㘥� ���㘨��!");
                              ^
HelloWorldCp866_2.java:6: warning: unmappable character for encoding UTF8
        System.out.println("�똪� �㘥� ���㘨��!");
                                ^
HelloWorldCp866_2.java:6: warning: unmappable character for encoding UTF8
        System.out.println("�똪� �㘥� ���㘨��!");
                                  ^
HelloWorldCp866_2.java:6: warning: unmappable character for encoding UTF8
        System.out.println("�똪� �㘥� ���㘨��!");
                                    ^
HelloWorldCp866_2.java:6: warning: unmappable character for encoding UTF8
        System.out.println("�똪� �㘥� ���㘨��!");
                                     ^
HelloWorldCp866_2.java:6: warning: unmappable character for encoding UTF8
        System.out.println("�똪� �㘥� ���㘨��!");
                                      ^
HelloWorldCp866_2.java:6: warning: unmappable character for encoding UTF8
        System.out.println("�똪� �㘥� ���㘨��!");
                                        ^
HelloWorldCp866_2.java:6: warning: unmappable character for encoding UTF8
        System.out.println("�똪� �㘥� ���㘨��!");
                                         ^

Даже сказать нечего. Если под Windows, когда однобайтовая Cp866 расценивается как однобайтовая
же Cp1251, не отображается только «Ш», то под Linux, при попытке расценить
Cp866
как многобайтовую UTF-8, текст вообще не распознался. Вылез какой-то странный
иероглиф, результат случайного совпадения нескольких байтов со схемой кодирования UTF-8.

Думаю, вы уже понимаете и то, почему при переносе скомпилированного кода из-под Windows в Linux все перестало
работать. Байты, выводимые на консоль, соответствую Cp866. А в Linux ожидается
UTF-8
. При переносе с Linux на Windows код тоже ломается, правда, по другой причине. При компиляции
там все в порядке, ибо кодировки файла и системы совпадают (если вы помните, там нормально работал именно
UTF-8 вариант кода). А вот при выводе на консоль используется системная кодировка, отличная от
консоли.

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

Как именно надо учитывать кодировку? Очень просто.

Как это должно быть сделано

Начнем с компиляции.

У компилятора есть опция -encoding. Она позволяет указать кодировку исходника. Вот ее и надо
использовать. Попробуем на примере с шипящими. Под Windows:

javac -cp . -d . -encoding Cp866 HelloWorldCp866_2.java

java -cp . test.HelloWorldCp866_2
╠√╪ър ёє╪хъ эрёє╪шыр!

И под Linux:

$ javac -cp . -d . -encoding Cp866 HelloWorldCp866_2.java
$ java -cp . test.HelloWorldCp866_2
МыШка суШек насуШила!

Если сравнивать с предыдущим вариантом, радует уже хотя бы отсутствие предупреждений
типа unmappable character for encoding XXX – исходник прочитан корректно. Под Linux и
выполнение замечательно – кодировка консоли совпадает с системной. А вот в Windows при выполнении
по-прежнему грустная картина. Не беда, сейчас и это поправим.

Итак, для того, чтобы обеспечить правильный вывод на консоль, нужно в приложении установить кодировку этой
консоли. Делается это просто. Тип поля System.outjava.io.PrintStream.
У этого класса есть один конструктор, в который можно передать кодировку. Этот конструктор и надо
использовать для создания нового потока с правильной кодировкой над существующим System.out:

System.setOut(new java.io.PrintStream(System.out, true, "Cp866"));

И всё бы хорошо. Но в разных системах кодировки консоли разные. Потому – лучше выставить значение
кодировки через свойство виртуальной машины. При старте проверить его наличие, и если установлено –
использовать. Это средство будет универсальным. Т.е. код установки кодировки консоли получится такой:

String consoleEncoding = System.getProperty("consoleEncoding");
if (consoleEncoding != null) {
    try {
        System.setOut(new PrintStream(System.out, true, consoleEncoding));
    } catch (java.io.UnsupportedEncodingException ex) {
        System.err.println("Unsupported encoding set for console: "+consoleEncoding);
    }
}

Вот версия в кодировке Cp866, в которой всё это учтено:
HelloWorldCp866_2_ok.java. Компилируем с ключом -encoding Cp866, запускаем в различных
вариантах:

javac -cp . -d . -encoding Cp866 HelloWorldCp866_2_ok.java

java -cp . test.HelloWorldCp866_2_ok
╠√╪ър ёє╪хъ эрёє╪шыр!

java -cp . -DconsoleEncoding=C866 test.HelloWorldCp866_2_ok
Unsupported encoding set for console: C866
╠√╪ър ёє╪хъ эрёє╪шыр!

java -cp . -DconsoleEncoding=Cp866 test.HelloWorldCp866_2_ok
МыШка суШек насуШила!

Ура! Шипящие появились! А ну-ка попробуем изначальную версию в UTF-8, с добавлением кодировки консоли (HelloWorldUTF8_ok.java):

javac -cp . -d . -encoding UTF-8 HelloWorldUTF8_ok.java

java -cp . test.HelloWorldUTF8_ok
╟фЁртёЄтєщ, ╠шЁ!

java -cp . -DconsoleEncoding=Cp866 test.HelloWorldUTF8_ok
Здравствуй, Мир!

И тут при указании кодировки консоли все в порядке. В Linux же все еще проще, там даже кодировку указывать
необязательно:

$ javac -cp . -d . -encoding Cp866 HelloWorldCp866_2_ok.java
$ java -cp . test.HelloWorldCp866_2_ok
МыШка суШек насуШила!

Ну и последняя проверка – переносимость. Вот написаные и скомпилированные уже по всем правилам
test.HelloWorldCp866_2_ok и test.HelloWorldUTF8_ok:
test_ok.zip. Компиляция сделана под Windows, впрочем, тут уже никакой разницы. Запускаем под Linux:

$ java -cp . test.HelloWorldCp866_2_ok
МыШка суШек насуШила!
$ java -cp . test.HelloWorldUTF8_ok
Здравствуй, Мир!

При обратном переносе ситуация аналогичная, так что консольный вывод приводит не буду.

* * *

Вот мы и добрались до финиша. Что мы вынесли из прочитанного:

Для того, чтобы исключить проблемы с кодировками при компиляции и консольном выводе,
необходимо:

  1. В явном виде указать компилятору кодировку исходника – с помощью опции
    -encoding или же каким-либо другим способом (в ant и maven есть
    свои настройки, в средах разработки также можно указать кодировку исходников)
  2. В явном виде установить кодировку консоли с помощью вызова:
    System.setOut(new java.io.PrintStream(System.out, true, "<имя кодировки>"));

Всё то же самое применимо и к потоку System.err. С System.in, использующимся для
чтения из консоли, ситуация немного другая, это чистый java.io.InputStream, потому для учета
кодировки из System.in надо читать, оборачивая его в java.io.Reader (а точнее, в его
наследника) с указанием кодировки.

Вот теперь – совсем всё! Всем спасибо!

P.S. А для чего это?

Как-то за кадром остался один вопрос. А для чего всё это вообще надо? Я разрабатываю все под
Windows, исполняю там же. Зачем мне все эти пляски с бубном про кодировки? Один раз настроил – и
хорошо.

Так вот. Дело в современных тенденциях в разработке ПО – она становится все более и более
распределенной. И, что более важно, над одним проектом начинают работать люди, говорящие на разных языках,
работающие под разными ОС и с большой вероятностью использующие разные кодовые страницы. Так вот, чтобы не
иметь проблем с исходниками, написанными товарищем по команде – жизненно необходимо работать в одной
кодировке. Иначе коллега пишет комментарии на немецком – Cp1252 – а я не могу их прочитать,
часть символов у меня заменяется на русские буквы. Ну ладно, с немецким еще как-то, а когда комментарии на
иврите? На японском? Единая кодировка – например, UTF-8, – эту проблему решает.

А по хорошему, конечно, код вообще не должен содержать ничего, кроме нижних 127 символов
iso-8859-1
, т.е. ASCII. Тогда будет гарантия чтения исходника в любых условиях.

Вот теперь действительно всё!

P.S. Обсуждение статьи: http://skipy-ru.livejournal.com/4755.html.

В начало

91 / 85 / 27

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

Сообщений: 928

1

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


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

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



0



Нарушитель

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

14042 / 8230 / 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

14042 / 8230 / 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

14042 / 8230 / 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



@msink

Android Studio ругается:

E:androidworkspacesamlib-Infosamlib-coresrcmonakhvsamlibdbentitySamLibConfig.java
Error:(53, 146) error: unmappable character for encoding Cp1251
Error:(80, 65) error: unmappable character for encoding Cp1251

Зачем ей 1251 понадобился?
Везде где можно вроде UTF8 выбран…

@monakhv

По умолчанию при компиляции на винде, полрузумевается, что исходник
кодирован в Cp1251. Попробуйте в опциях компилятора указать -encoding UTF-8

2015-05-26 13:59 GMT+03:00 Mike Sinkovsky notifications@github.com:

Android Studio ругается:

E:androidworkspacesamlib-Infosamlib-coresrcmonakhvsamlibdbentitySamLibConfig.java
Error:(53, 146) error: unmappable character for encoding Cp1251
Error:(80, 65) error: unmappable character for encoding Cp1251

Зачем ей 1251 понадобился?
Везде где можно вроде UTF8 выбран…


Reply to this email directly or view it on GitHub
#3.

@msink

Да, если добавить в samlib-core/build.gradle

compileJava.options.encoding = 'UTF-8'

то компилируется и запускается.

Только еще два ворнинга в логе:

Warning:Dependency org.apache.httpcomponents:httpclient:4.2.3 is ignored for debug as it may be conflicting with the internal version provided by Android.
     In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency org.apache.httpcomponents:httpclient:4.2.3 is ignored for release as it may be conflicting with the internal version provided by Android.
     In case of problem, please repackage it with jarjar to change the class packages

Это нормально или тоже надо как-то фиксить?

@monakhv

Можно игнорировать. Дело в том, что для будущей десктопной версии, эта библиотека действительно нужна, но а в Android она действительно есть по умолчанию в стандартной конфигурации.

@msink

Ну ладно.
Но строчку с кодировкой может добавите, если она на винде нужна, а на лин/мак не мешает?
Чтоб другие потом на эти грабли не наступали.

@monakhv

ОК! Это будет.
Хотя по хорошему бы надо все это в в ресурсы задвинуть, чтобы было не завмисимо от платформы, но с опцией это сделать действительно проще.

15:20:00: Executing task ‘build’…

****************************
Powered By MCP:
http://modcoderpack.com/
Searge, ProfMobius, Fesh0r,
R4wk, ZeuX, IngisKahn, bspkrs
MCP Data version : unknown
****************************
:compileApiJava UP-TO-DATE
:processApiResources UP-TO-DATE
:apiClasses UP-TO-DATE
:sourceMainJava
warning: [options] bootstrap class path not set in conjunction with -source 1.6
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsclientClientProxy.java:39: error: unmappable character for encoding Cp1251
// Р?щем GUI, соответствующий данному ID
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsclientClientProxy.java:52: error: unmappable character for encoding Cp1251
Р’РќР?РњРђРќР?Р•! РџРѕ туториалу, РјРЅРµ РЅРµ нужно делать проверку РІ строке 25.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsclientClientProxy.java:52: error: unmappable character for encoding Cp1251
Р’РќР?РњРђРќР?Р•! РџРѕ туториалу, РјРЅРµ РЅРµ нужно делать проверку РІ строке 25.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsclientguiMainMenuGUI.java:36: error: unmappable character for encoding Cp1251
/** Р?РіСЂРѕРє, открывший GUI */
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsclientguiMainMenuGUI.java:41: error: unmappable character for encoding Cp1251
/** Р?нвентарь для статов */
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsclientguiSSPPage.java:113: error: unmappable character for encoding Cp1251
// РРўРћ Р?Р— РўРЈРўРћР Рђ
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatscommonCommonProxy.java:93: error: unmappable character for encoding Cp1251
// Р?нициализация предметов статов
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatscommonCommonProxy.java:117: error: unmappable character for encoding Cp1251
// Р?нициализация предметов склиллов
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatscommonConfig.java:19: error: unmappable character for encoding Cp1251
/** Р?нферфейс управления конфигурацией */
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatscommonRSStats.java:34: error: unmappable character for encoding Cp1251
/** Р?РјСЏ РјРѕРґР° */
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatscommonnetworkRollPacketToServer.java:75: error: unmappable character for encoding Cp1251
* Р’РќР?РњРђРќР?Р•: РІ {@link #fromBytes(io.netty.buffer.ByteBuf)} нужно читать данные РІ
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatscommonnetworkRollPacketToServer.java:75: error: unmappable character for encoding Cp1251
* Р’РќР?РњРђРќР?Р•: РІ {@link #fromBytes(io.netty.buffer.ByteBuf)} нужно читать данные РІ
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatscommonnetworkRollPacketToServer.java:90: error: unmappable character for encoding Cp1251
/* Определяет знак модификатора. Р?спользуетяся С‚.Рє. writeVarShort РЅРµ умеет записывать
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsdataExtendedPlayer.java:50: error: unmappable character for encoding Cp1251
/** Р?нвентарь для статов */
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsdataExtendedPlayer.java:52: error: unmappable character for encoding Cp1251
/** Р?нвентарь для скиллов */
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsdataExtendedPlayer.java:54: error: unmappable character for encoding Cp1251
/** Р?нвентарь для носимых предметов */
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsdataExtendedPlayer.java:156: error: unmappable character for encoding Cp1251
// Р?нициализируем основные параметры
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventorySkillsInventory.java:51: error: unmappable character for encoding Cp1251
* @param slotIndex Р?ндекс слота РІ инвенторе, РёР· которого нужно получить предмет
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventorySkillsInventory.java:94: error: unmappable character for encoding Cp1251
* @return Р?тог проверки: возвращает true, если предмет можно поместить РІ инвентарь.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventorySkillsInventory.java:95: error: unmappable character for encoding Cp1251
* Р?наче — false.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventorySkillsInventory.java:104: error: unmappable character for encoding Cp1251
* @return Р?РјСЏ инвентаря
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventorySkillsInventory.java:172: error: unmappable character for encoding Cp1251
* Р?нициализирует начальные скиллы
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventoryStatsInventory.java:17: error: unmappable character for encoding Cp1251
* Р?нвентарь для статов РёРіСЂРѕРєР° (сила, ловкость, выносливость Рё С‚.Рґ.)
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventoryStatsInventory.java:34: error: unmappable character for encoding Cp1251
/** Р?РіСЂРѕРє, Рє которому привязан инвентарь */
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventoryStatsInventory.java:55: error: unmappable character for encoding Cp1251
* @param slotIndex Р?ндекс слота РІ инвенторе, РёР· которого нужно получить предмет
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventoryStatsInventory.java:106: error: unmappable character for encoding Cp1251
* @return Р?РјСЏ инвентаря
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventoryStatsInventory.java:153: error: unmappable character for encoding Cp1251
* Р?нвентарь может использоваться РёРіСЂРѕРєРѕРј?
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventoryStatsInventory.java:178: error: unmappable character for encoding Cp1251
* @return Р?тог проверки: возвращает true, если предмет можно поместить РІ инвентарь.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventoryStatsInventory.java:179: error: unmappable character for encoding Cp1251
* Р?наче — false.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventoryStatsInventory.java:236: error: unmappable character for encoding Cp1251
* Р?нициализирует начальные статы
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventorycontainerMainContainer.java:129: error: unmappable character for encoding Cp1251
// Р?звлекаем Рё сохраняем модификаторы РёР· стака, который кладется РІ слот
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventorycontainerMainContainer.java:324: error: unmappable character for encoding Cp1251
* @param inventory Р?вентарь, РІ котором производится РїРѕРёСЃРє
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventorycontainerMainContainer.java:325: error: unmappable character for encoding Cp1251
* @return Р?ндекс СЃРІРѕР±РѕРґРЅРѕР№ ячейки инвентаря. Если свободных ичеет нет, метод вернет -1.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventoryslotsSkillSlot.java:17: error: unmappable character for encoding Cp1251
* @return Р?тог проверки: возвращает true, если предмет можно поместить РІ инвентарь.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventoryslotsSkillSlot.java:18: error: unmappable character for encoding Cp1251
* Р?наче — false.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventoryslotsStatSlot.java:23: error: unmappable character for encoding Cp1251
* @return Р?тог проверки: возвращает true, если предмет можно поместить РІ инвентарь. Р?наче — false.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsinventoryslotsStatSlot.java:23: error: unmappable character for encoding Cp1251
* @return Р?тог проверки: возвращает true, если предмет можно поместить РІ инвентарь. Р?наче — false.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsitemsExpItem.java:30: error: unmappable character for encoding Cp1251
// TODO: Р?гнорирует meta
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsitemsRerollCoin.java:36: error: unmappable character for encoding Cp1251
// TODO: Р?гнорирует meta
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsitemsSkillItem.java:77: error: unmappable character for encoding Cp1251
* @return Р?РєРЅРѕРєР°, соответвующая субтипу
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsitemsSkillItem.java:91: error: unmappable character for encoding Cp1251
* @return True, если предмету нужно включить анимацию зачарования. Р?наче — false.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsitemsStatItem.java:133: error: unmappable character for encoding Cp1251
* @return Р?РєРЅРѕРєР°, соответвующая субтипу
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsitemsStatItem.java:147: error: unmappable character for encoding Cp1251
* @return True, если предмету нужно включить анимацию зачарования. Р?наче — false.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDescriptionCutter.java:11: error: unmappable character for encoding Cp1251
* @param sourceString Р?сходная строка
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDescriptionCutter.java:26: error: unmappable character for encoding Cp1251
returnStrings[stringIndex] = «»; // Р?циниализируем строку пустой строкой
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:19: error: unmappable character for encoding Cp1251
/** Р?РјСЏ РёРіСЂРѕРєР°, делающий Р±СЂРѕСЃРѕРє */
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:21: error: unmappable character for encoding Cp1251
/** Р?РјСЏ пробрасываемой статы/навыка */
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:29: error: unmappable character for encoding Cp1251
* Р’РќР?РњРђРќР?Р•: эта строка РЅРµ может локализироваться РЅР° строне сервера, С‚.Рє.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:29: error: unmappable character for encoding Cp1251
* Р’РќР?РњРђРќР?Р•: эта строка РЅРµ может локализироваться РЅР° строне сервера, С‚.Рє.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:34: error: unmappable character for encoding Cp1251
* Р’РќР?РњРђРќР?Р•: эта строка РЅРµ может локализироваться РЅР° строне сервера, С‚.Рє.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:34: error: unmappable character for encoding Cp1251
* Р’РќР?РњРђРќР?Р•: эта строка РЅРµ может локализироваться РЅР° строне сервера, С‚.Рє.
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:43: error: unmappable character for encoding Cp1251
* @param playerName Р?РјСЏ РёРіСЂРѕРєР°, делающий Р±СЂРѕСЃРѕРє
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:44: error: unmappable character for encoding Cp1251
* @param rollName Р?РјСЏ пробрасываемой статы/навыка
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:58: error: unmappable character for encoding Cp1251
* @param playerName Р?РјСЏ РёРіСЂРѕРєР°, делающий Р±СЂРѕСЃРѕРє
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:59: error: unmappable character for encoding Cp1251
* @param rollName Р?РјСЏ пробрасываемой статы/навыка
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:77: error: unmappable character for encoding Cp1251
* @param playerName Р?РјСЏ РёРіСЂРѕРєР°, делающий Р±СЂРѕСЃРѕРє
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:78: error: unmappable character for encoding Cp1251
* @param rollName Р?РјСЏ пробрасываемой статы/навыка
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:94: error: unmappable character for encoding Cp1251
* @param playerName Р?РјСЏ РёРіСЂРѕРєР°, делающий Р±СЂРѕСЃРѕРє
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:95: error: unmappable character for encoding Cp1251
* @param rollName Р?РјСЏ пробрасываемой статы/навыка
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:115: error: unmappable character for encoding Cp1251
* @param playerName Р?РјСЏ РёРіСЂРѕРєР°, делающий Р±СЂРѕСЃРѕРє
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:116: error: unmappable character for encoding Cp1251
* @param rollName Р?РјСЏ пробрасываемой статы/навыка
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:130: error: unmappable character for encoding Cp1251
* @return Р?РјСЏ РёРіСЂРѕРєР°, делающий Р±СЂРѕСЃРѕРє
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:138: error: unmappable character for encoding Cp1251
* @return Р?РјСЏ пробрасываемой статы/навыка
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:238: error: unmappable character for encoding Cp1251
rollResultString += » » + critFail + » «;//»В§rВ§nВ§lВ§4РљР Р?РўР?ЧЕСКР?Й§rВ§nВ§l В§rВ§nВ§lВ§4РџР РћР’РђР›!В§rВ§f «;
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:238: error: unmappable character for encoding Cp1251
rollResultString += » » + critFail + » «;//»В§rВ§nВ§lВ§4РљР Р?РўР?ЧЕСКР?Й§rВ§nВ§l В§rВ§nВ§lВ§4РџР РћР’РђР›!В§rВ§f «;
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsDiceRoll.java:238: error: unmappable character for encoding Cp1251
rollResultString += » » + critFail + » «;//»В§rВ§nВ§lВ§4РљР Р?РўР?ЧЕСКР?Й§rВ§nВ§l В§rВ§nВ§lВ§4РџР РћР’РђР›!В§rВ§f «;
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsRollModifier.java:45: error: unmappable character for encoding Cp1251
if (word.isEmpty()) break; // TODO: эта костылина РЅРµ совсем костылина. Р?Р·-Р·Р° бага СЃ СЂСѓСЃСЃРєРёРјРё буквами РІ RollModifier.description, может придти пустое слово
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsRollModifier.java:48: error: unclosed character literal
if (word.charAt(0) != ‘В§’)
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsRollModifier.java:48: error: illegal character: ‘u00a7’
if (word.charAt(0) != ‘В§’)
^
D:UsersraresDownloadsSavageWorldRPbuildsourcesjavarsstatsutilsRollModifier.java:48: error: unclosed character literal
if (word.charAt(0) != ‘В§’)
^
3 errors
1 warning
:compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ‘:compileJava’.
> Compilation failed; see the compiler error output for details.

* Try:
Run with —stacktrace option to get the stack trace. Run with —info or —debug option to get more log output.

BUILD FAILED

Total time: 5.348 secs
Compilation failed; see the compiler error output for details.
15:20:06: Task execution finished ‘build’.

Понравилась статья? Поделить с друзьями:
  • Java error unable to load resource
  • Java error script вк
  • Java error release version 5 not supported ошибка
  • Java error release version 5 not supported как убрать
  • Java error reading zip end header not found