У меня есть устаревшая Java-программа, которая выводит SQL-скрипт. Затем я использую Apache Derby для запуска этого SQL в целевой базе данных (которая не находится на том же сервере, что и CRON).
Когда работает через шпатлевку, это прекрасно работает. При запуске в Windows это работает нормально. При запуске с использованием CRON Дерби читает знаки £ как?.
Если я посмотрю на сгенерированный скрипт sql (использующий VI), он содержит знаки £. Если я проверю базу данных, однако, она содержит?.
Почему запуск в CRON заставляет программу вести себя по-другому?
Похоже, что CRON был проблемой. Когда Java-программа работала и выводила результаты в файл, она не могла правильно записать. Файл SQL, который я читал, указывал на неправильную версию.
Чтобы решить эту проблему, я добавил следующий код в верхней части скрипта CRON.
export LANG = en_US.UTF-8
. Это обеспечило правильный формат знака £.
для меня, упомянутые решения не работали. Другое решение, которое я прочитал, было установить
«LANG = en_US.UTF-8» в файле «/ etc / environment».
Но не работал ни.
Для меня работало открыть файл crontab с помощью
crontab -e
и установить в начале:
LANG=de_DE.UTF-8
LANGUAGE=de
LC_CTYPE=de_DE.UTF-8
PYTHONIOENCODING=utf8
, который также устанавливает переменную окружения.
Это должно быть сделано с каждым пользователем, которого вы хотите запустить эти переменные. Для root запустите "sudo -s" перед входом в crontab.