Передача русских символов в качестве аргументов java

113
25 марта 2021, 15:10

При вызове java-программы из командной строки с аргументами в качестве русских символов эти аргументы не распознаются программой. Что можно сделать, чтобы этого избежать?

Код программы:

public class Test {
    public static void main(String[] args) {
        System.out.println(args[0]);
        System.out.println("Тест 2");
    }
}

Код запуска (bat файл):

chcp 65001
java -Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8 -jar "Best program.jar" "Привет мир2"

В итоге вывод:

?????? ???2
Тест 2

UPD: решение проблемы не нашёл, в итоге запускаю программу на сервере(Linux) через php-скрипт, так программа нормально работает с аргументами:

exec('java -jar "Best program.jar" "Привет мир2"');
Answer 1

У вас, скорее всего, .bat файл сохранен в кодировке cp1251, перекодируйте его в UTF-8, всё должно заработать.

Answer 2

Манипуляции с кодировкой консоли и JVM не нужны. Просто

> javac -encoding utf-8 Test.java
> java Test "Привет мир"

Естественно, кодировка Test.java должна соответствовать значению ключа encoding.

READ ALSO
Не открывается подменю при нажатии пункта главного меню

Не открывается подменю при нажатии пункта главного меню

Я использовал библиотеку AndroidX Preference для своего проектаЭтот проект имеет главное меню и подменю

121
Отправка файла на веб сервис через java servlets

Отправка файла на веб сервис через java servlets

Есть веб форма, в которой есть возможность отправки файла на сервер на сервлетах javaНе могу сообразить, как мне организовать принятие файла...

99
Проблема с библиотекой Google Services 4.3.0

Проблема с библиотекой Google Services 4.3.0

Обновил библиотеку с

104