it-swarm.com.de

CRON ändert die Codierung?

Ich habe ein Legacy-Programm Java, das ein SQL-Skript ausgibt. Ich verwende dann Apache Derby, um dieses SQL auf der Zieldatenbank (die sich nicht auf demselben Server wie CRON befindet) auszuführen.

Bei der Ausführung über PuTTY funktioniert dies einwandfrei. Unter Windows funktioniert dies einwandfrei. Bei der Ausführung mit CRON liest Derby £ als?.

Wenn ich mir das mit VI generierte SQL-Skript anschaue, enthält es die £ -Zeichen. Wenn ich die Datenbank jedoch überprüfe, enthält sie?.

Warum sollte das Ausführen dieses Befehls unter CRON dazu führen, dass sich das Programm anders verhält?

7
Codemwnci

Es scheint, dass CRON das Problem war. Wenn das Programm Java ausgeführt und die Ergebnisse in eine Datei ausgegeben wurde, konnte es nicht richtig schreiben. Die gelesene SQL-Datei zeigte auf eine falsche Version.

Um das Problem zu lösen, habe ich den folgenden Code am oberen Rand des CRON-Skripts hinzugefügt

export LANG = en_US.UTF-8

Dies stellte sicher, dass das £ -Zeichen korrekt formatiert war.

6
Codemwnci

für mich haben die genannten lösungen nicht funktioniert. eine andere lösung, die ich las, war zu setzen

"LANG = de_DE.UTF-8" in der Datei "/ etc/environment".

Funktionierte aber auch nicht.

Bei mir hat es funktioniert, wenn ich die crontab-Datei mit öffne

crontab -e

und am Anfang setzen:

LANG=de_DE.UTF-8
LANGUAGE=de
LC_CTYPE=de_DE.UTF-8
PYTHONIOENCODING=utf8

Womit auch die Umgebungsvariable festgelegt wird.

Dies muss für jeden Benutzer erfolgen, den Sie mit diesen Variablen ausführen möchten. Für root "Sudo -s" ausführen, bevor crontab eingegeben wird.

1
snickers2k