Передача аргументов CMD, содержащих расширенные символы ASCII, из Cygwin в программу Java - PullRequest
0 голосов
/ 17 января 2019

В устаревшей системе, использующей Cygwin в Windows с JRE, мне нужно вызвать программу Java из сценария оболочки и передать ей конкретные аргументы CMD. Аргументы считываются из файла, закодированного в Cp1250 и, следовательно, могут содержать Расширенные символы ASCII .

Сценарий считывает значение аргумента из входного файла в кодировке Cp1250, используя read.

#!/bin/bash

export LC_ALL=C

# ...

IFS= read -r -n 10 -d '' ARG < "$INPUT_FILE"
# echo "$ARG" > /tmp/argument_test

# ...

java -jar foo.jar "$ARG"

Java-программа получает аргументы, содержащие несовпадающие символы . Однако, когда я проверяю значение аргумента чтения, выводя переменную аргумента в файл tmp, его значение корректно.

Так что, похоже, JRE не знает о среде / кодировке Cygwin, так как она была скомпилирована для Windows. Я пытался установить LC_ALL=C в сценарии, но пока не повезло.

Можно ли как-нибудь намекнуть на JRE с помощью кодировки, используемой в качестве аргументов? Есть ли другой способ решить эту проблему?

...