Поддержка UTF-8 при запуске кода через консоль

Я разрабатываю простой инструмент автоматизации, который работает с Maven и JAVA.

Мои конечные пользователи (тестеры) запускают мою программу через консоль (cmd). В основном мы отправляем запросы на отдых и получаем ответы в виде JSON. У меня проблема с испанскими/итальянскими специальными символами. Все работает хорошо, когда я запускаю инструмент из IntelliJ, но когда тесты запускают мою программу через консоль, они получают другой результат.

Например, они видят этот текст:

КАТЕГОРИЯ �?A

это должно было быть:

КАТЕГОРИЯ

Есть ли способ заставить консоль поддерживать UTF-8 через код Maven или Java? Проблема заключается в том, что консоль работает с символами Windows-1252, а не с UTF-8.

В моем POM у меня есть этот набор, но он не решает проблему:

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

Пожалуйста, пролейте свет на мою проблему


person Tal Angel    schedule 18.05.2020    source источник
comment
Исходная кодировка — это одно, а консоль — совсем другое. Кроме того, приведенные вами примеры - это совершенно другой текст, кроме неправильной кодировки...   -  person khmarbaise    schedule 18.05.2020
comment
Я отредактировал свой вопрос. Почему консольная кодировка берет верх?   -  person Tal Angel    schedule 18.05.2020
comment
Это не вопрос Java, а только связанный с вашей средой или конфигурацией операционной системы. Если вам нравится Unix, попробуйте запустить locale, чтобы получить переменные, управляющие вашим языком оболочки. Вы можете переопределить их на что-то похожее на UTF8.   -  person Pierre Salagnac    schedule 18.05.2020
comment
Я работаю с Windows-10. Как проверить и изменить свой «язык»?   -  person Tal Angel    schedule 18.05.2020
comment
Поскольку Maven поддерживает только ASCII, UTF-8 или UTF-16.   -  person Tal Angel    schedule 18.05.2020
comment
Я думаю, что ваш код неправильно анализирует входящие данные. Попробуйте распечатать все символы и их числовое значение — я предполагаю, что вы обнаружите, что ваш код состоит из двух символов вместо одного здесь.   -  person Thorbjørn Ravn Andersen    schedule 18.05.2020
comment
Ваше понимание того, что делает свойство project.build.sourceEncoding, неверно. Это не влияет на ваш код во время выполнения.   -  person Thorbjørn Ravn Andersen    schedule 18.05.2020
comment
Я нашел это, чтобы изменить кодировку для терминала Windows title="с использованием кодировки utf 8 chcp 65001 в окне командной строки Windows PowerShell"> stackoverflow.com/questions/57131654/   -  person Pierre Salagnac    schedule 18.05.2020
comment
У меня есть проблема. Когда я запускаю тест Exact на IntelliJ, все работает идеально. Когда я запускаю латинские символы CMD, они кажутся странными. Что-то заставляет консоль переопределять кодировку UTF-8, и я не знаю, как это решить.   -  person Tal Angel    schedule 18.05.2020
comment
[1] Попробуйте вызвать chcp 65001 из командной строки, чтобы изменить кодовую страницу перед запуском приложения. Мой ответ на вопрос SO вывод unicode java windows cmd может помочь. [2] См. этот ответ SO, чтобы узнать, как установить локаль в вашем приложении Java. [3] Вам не нужно менять языковой стандарт Windows 10, но см. как нужно ли мне просматривать и изменять языковые настройки системы, чтобы использовать выбранный мной язык? для получения дополнительной информации об этом.   -  person skomisa    schedule 29.05.2020