У меня проблемы с кодировкой UTF-8 при запуске jars из cmd.При запуске проекта из IntelliJIdea у меня нет проблем, символы отображаются и выводятся правильно.
Для примера;Я использовал некоторые из предложенных решений от подобных проблем здесь, stackoverflow, который я перечислю.
public static String convertToUTF8(String s) {
String out = null;
try {
out = new String(s.getBytes("UTF-8"), "ISO-8859-1");
} catch (java.io.UnsupportedEncodingException e) {
return null;
}
return out;
}
System.out.println(Charset.defaultCharset());
String test = "written in utf-8İİiiŞŞŞĞĞÜĞĞğ";
System.out.println(test);
System.out.println(convertToUTF8(test));
PrintWriter out = new PrintWriter(new File("hello.txt"), "UTF-8");
out.print("written in utf-8İİiiŞŞŞĞĞÜĞĞğ");
out.close();
Выводы следующие:
Запуск из IntelliJIdea:
Запуск из cmd с использованием jar
Другоерешения, которые я проверял;
Добавление -Dfile.encoding=utf-8
при запуске cmd, java -Dfile.encoding=utf-8 -jar file.jar
: ничего не меняется
Использование терминала Ubuntu:первая строка UTF-8, но остальная часть совпадает с выводом cmd.
Запуск chcp 65001
для изменения кодовой страницы на UTF-8: пока видимый вывод зафиксирован, привет.txt остается прежним.
Использование powershell: ничего не меняет.
Чего я хочу добиться, так это получить правильную обработку кодирования при запуске jar-файловиз CMD, так как я планирую намjar в качестве фонового рабочего, который будет обрабатывать множество символов в кодировке UTF-8.
Обновление: После замены символов UTF-8 на экранированные эквиваленты Unicode;как от ç до \u011f
, код выполняется так, как ожидалось.Меня беспокоит то, что, хотя я могу выполнять функцию замены строк, например, replace ("ç", '\ u011f'), и jar работает гладко, почему система не справляется с этим правильно при выводе?Если система понимает тип char во время выполнения, почему я получаю символы Ä на выходе?