Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 25.02.2020
Сообщений: 2
1

Слетает кодировка(?) при запуске jar из консоли

25.02.2020, 20:52. Просмотров 1277. Ответов 2
Метки нет (Все метки)


Программа получает на вход input файл с текстом на русском языке, после некоторых преобразований (с использованием StringBuilder) возвращает его в файл output.

При запуске программы из IntelliJ IDEA всё нормально и output получается таким, какой он должен быть.

Однако, если запускаю jar файл через консоль командой java -jar *файл*, в output-файле появляются разные символы, которых там не должно быть, например " ̸х ̸х ̸х " (зачёркнутые кресты)

Вот часть кода, в которой записывается output.
Java
1
2
3
File output = new File(outputFile);
        FileWriter fileWriter = new FileWriter(outputFile);
        fileWriter.write(reduplicate(input,replace));
Вот reduplicate();
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
static String reduplicate(StringBuilder[] input, String replace) {
        StringBuilder res = new StringBuilder();
        for (int i = 0; i < input.length; i++)
        {
            if (!(findVowelIndex(input[i].toString()) == -1)) {
                if (!(findVowelIndex(replace) == -1)) {
                    int index = findVowelIndex(input[i].toString());
                    input[i].replace(index, index + 1, Character.toString(yotate(input[i].toString().toCharArray()[index])));
                }
                if (Character.isUpperCase(input[i].charAt(0))) {
                    res.append(input[i].replace(0, findVowelIndex(input[i].toString()), firstCharToUpperCase(replace)));
                } else if (!Character.isUpperCase(input[i].charAt(0))) {
                    res.append(input[i].replace(0, findVowelIndex(input[i].toString()), toLowerCase(replace)));
                }
 
                res.append(" ");
            }
        }
        return res.toString();
    }
reduplicate() принимает на вход StringBuilder[] и String и проводит с ними некоторые махинации, выдавая обратно String через StringBuilder.toString();

Так вот, как можно исправить эту проблему и сделать так, чтобы при запуске jar из консоли всё работало также как из IDE?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2020, 20:52
Ответы с готовыми решениями:

Ошибка при запуске jar-файла
Как это исправить?

При запуске jar файла отказано в доступе
При запуске jar файла через консоль выдает следующее сообщение Error: Unable to access jarFile...

Ошибка при первом запуске jar файла
Здравствуйте, написал программку и упаковал её в jar файл, но при первом его запуске(после...

Ошибки при запуске приложения через jar файл
Здравствуйте. У меня проблема, при запуске из нетбинса программа корректно запускается и работает,...

2
Модератор
1454 / 446 / 149
Регистрация: 11.08.2017
Сообщений: 1,513
25.02.2020, 21:17 2
Лучший ответ Сообщение было отмечено Missl как решение

Решение

Ну как минимум для чтения записи использовать кодировку UTF8 для начала.
Например вот так
Java
1
2
3
4
5
6
String file = "outputFile.txt";
try (Writer writer = new OutputStreamWriter(new FileOutputStream(file, false), StandardCharsets.UTF_8)) {
writer.write(reduplicate(input,replace));
}
try (Reader reader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8)) {
}
Методы чтения/записи вроде те же самые
1
0 / 0 / 0
Регистрация: 25.02.2020
Сообщений: 2
25.02.2020, 21:55  [ТС] 3
Спасибо большое, всё заработало
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2020, 21:55

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Ошибка NoSuchMethodError: при запуске из консоли
Всем привет. Прошу не кидаться камнями, только начал учить java. Просьба помочь понять в чем...

Печать русских букв при запуске в консоли
Пытаюсь вывести приглашение на русском - System.out.println(&quot;\n\nВведите массив : &quot;); В eclipse ...

Кодировка в консоли при запуске bat-файла с русскими символами
Программа создает bat-файл после чего исполняет его, но вот проблема: в нем указан один путь,...

Размер компонентов GUI при запуске jar больше чем при запуске в IDE
Вообщем есть такая вот проблема: Еще с давних пор когда начинал изучать Swing заметил, что при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.