CRON меняет кодировку?

У меня есть устаревшая Java-программа, которая выводит SQL-скрипт. Затем я использую Apache Derby для запуска этого SQL в целевой базе данных (которая не находится на том же сервере, что и CRON).

Когда работает через шпатлевку, это прекрасно работает. При запуске в Windows это работает нормально. При запуске с использованием CRON Дерби читает знаки £ как?.

Если я посмотрю на сгенерированный скрипт sql (использующий VI), он содержит знаки £. Если я проверю базу данных, однако, она содержит?.

Почему запуск в CRON заставляет программу вести себя по-другому?

7
задан 27 October 2010 в 12:12

2 ответа

Похоже, что CRON был проблемой. Когда Java-программа работала и выводила результаты в файл, она не могла правильно записать. Файл SQL, который я читал, указывал на неправильную версию.

Чтобы решить эту проблему, я добавил следующий код в верхней части скрипта CRON.

export LANG = en_US.UTF-8

. Это обеспечило правильный формат знака £.

0
ответ дан 27 October 2010 в 12:12

для меня, упомянутые решения не работали. Другое решение, которое я прочитал, было установить

«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.

0
ответ дан 27 October 2010 в 12:12

Другие вопросы по тегам:

Похожие вопросы: