Как правило, существует несколько возможных проблем с конфигурацией кодировок символов.
Я думаю, файл jar все еще верен. Только проблема заключается в выводе символов в консоль (или что вы используете для командной строки выполнения).
Ваша JRE обычно выводит символы в System.out
, используя «кодировку платформы по умолчанию». Вы можете проверить это с помощью
System.out.println(System.getProperty("file.encoding"));
(конечно, в JAR-файле, скомпилированном maven, чтобы проверить среду, в которой существует проблема). Это должно дать «UTF-8». Если нет, запустите -Dfile.encoding=UTF-8
в командной строке Java и посмотрите, не изменилось ли что-то.
Тогда может случиться так, что консоль, на которую вы выводите, не поддерживает UTF-8. Если вы работаете в системе Windows, проверьте, какую кодовую страницу использует консоль Windows. Вы можете изменить это с помощью
> CHCP 65001
а затем запустите файл JAR. 65001 — это номер кодовой страницы Windows, означающий UTF-8. Надеюсь, тогда вы увидите правильный вывод.
Еще один аспект часто может пойти не так, но я думаю, что он не относится к вашему случаю: возможно, вы написали свои исходные файлы Java в UTF-8, но maven считает, что источники закодированы, например. ИСО-8859-1. Вы можете проверить это по
String text = "Привет";
System.out.println(text.length());
System.out.println(text);
Если напечатанная длина не равна 6, то возникает путаница с кодировкой исходного файла.