Артефакт сборки Intellij — runnable jar UTF-8

#java #intellij-idea #build #artifact

#java #intellij-идея #сборка #артефакт

Вопрос:

Я создал проект, который считывает файл csv (сохраненный как csv UTF-8). в моем проекте я прочитал каждую строку этого csv-файла. Вывод каждой строки отображается в файле журнала.

Теперь, когда я запускаю свой проект в intellij и просматриваю файл журнала, все строки доступны для чтения. Но когда я создаю артефакт из своего проекта, а затем запускаю этот jar, некоторые символы в csv заменяются символом ‘?’ ..

я заглянул в настройки своего проекта в разделе «кодировка файла», и там также есть все UTF-8.

Я понятия не имею, как это возможно.. Кто-нибудь может мне помочь? Спасибо!

Комментарии:

1. Поможет ли это, если вы запустите его с -Dfile.encoding=UTF-8 опцией виртуальной машины из командной строки jar?

2. Можете ли вы привести мне пример полной строки, которую я должен ввести в cmd?

3. java -Dfile.encoding=UTF-8 -jar yourapp.jar param1 param2

4. Да, это работает! большое, большое спасибо!

Ответ №1:

Укажите кодировку при запуске приложения из командной строки следующим образом:

 java -Dfile.encoding=UTF-8 -jar yourapp.jar param1 param2
  

Или измените код вашего приложения, который читает / записывает файлы, чтобы явно принудительно использовать правильную кодировку.

Ответ №2:

Когда я указываю -Dfile.encoding=UTF-8, мне нужно поместить этот параметр кодировки между двумя «, однако он не работает и возвращается ошибка. Может быть, это поможет кому-то с той же проблемой, что и у меня.

 java "-Dfile.encoding=UTF-8" -jar app.jar