Проблема возникает при передаче аргумента имени файла приложению (путем перетаскивания), которое содержит умлауты. Оба варианта программы отображают переданное имя файла (фактически полный путь к файлу) как:
Код: Выделить всё
U:\Documents\Kontoausz�ge\...\Umsatz�bersicht_20250401-20250831.csv
Код: Выделить всё
java.io.FileNotFoundException: U:\Documents\Kontoausz�ge\...\Umsatz�bersicht_20250401-20250831_AT221600000100586916.csv (The system cannot find the path specified)
Почему такое поведение при обработке имени/пути отличается? Есть ли возможность согласовать набор символов командной строки, используемый собственным кодом, сгенерированным GraalVM, с набором символов, используемым "ванильным" Java-кодом на основе JDK?
Позднее добавление - ответ разное. вопросы:
Это в Windows 10 (установлены все текущие исправления/патчи/обновления).
Здесь не задействована никакая «VM», кроме виртуальной машины Java. Фактическое имя файла/путь — U:\Documents\Kontoauszüge\...\Umsatzübersicht_20250401-20250831.csv
(часть ... пути не содержит умлаутов или других специальных символов).
Код: Выделить всё
C:\>chcp
Active code page: 437
Упомянутое мной перетаскивание осуществляется через Windwos Explorer, «графический интерфейс», о котором некоторые респонденты хотели знать, — это рабочий стол Windows. Я перетаскиваю файл, который хочу обработать, через командный файл, который затем вызывает Java-приложение, передавая аргумент через %1, в командную строку, вызывающую Java-приложение (или .exe в случае GraalVM).
Мобильная версия