Ich habe folgenden Befehl in einem Cronjob:
*/5 * * * * php /var/www/domain/yii rss/parse
Es gibt E-Mails in einem falschen Zeichensatz aus:
Content-Type: text/plain; charset=ANSI_X3.4-1968
Aber wenn ich diesen Befehl direkt in der CLI starte und in ein Protokoll ausgebe:
php /var/www/domain/yii rss/parse > log
Ich bekomme die richtige Kodierung - UTF-8
Es wurde bereits versucht, lang in / etc / environment festzulegen:
LANG=en_US.UTF-8
Cron neu gestartet, aber immer noch ANSI über CRON verwendet. Irgendwelche Ideen?
/etc/environment
die von cron nicht berücksichtigt wird.Antworten:
Mein Problem wurde durch Hinzufügen zu einer Crontab behoben:
Am Anfang der Datei schrieb ich:
Jetzt sind alle meine Cron-Job-E-Mails in UTF-8-Zeichensatz.
quelle
CONTENT_TYPE
funktioniert definitiv.In Bezug auf dieses Problem habe ich in Debian Jessie in / etc / default / cron Folgendes gefunden:
Mit anderen Worten, die Standardeinstellung ist, dass in dieser Distribution die Umgebungsdateien gelesen werden. Nach dem erneuten Ausführen
dpkg-reconfigure locales
(in meinem Fall war der Standardwert bereits auf UTF8 festgelegt) habe ich mir / etc / environment angesehen und festgestellt, dass es leer war. Nachdem ich dort eingefügtLC_ALL=en_US.UTF-8
hatte, hatten die Cron-Job-E-Mails den richtigen Zeichensatz-Header.quelle
Wenn Sie den Befehl per CLI eingeben, erhalten Sie das utf-8-Chatset, glaube ich, weil Sie einen MAC OS-PC oder einen Linux-PC verwenden
Ich habe dies gesagt, weil das aktuelle LANG Ihres PCs in Ihrer SSH-Sitzung kopiert wird
von man sshd_config
Ihr crond-Prozess verwendet charset = ANSI_X3.4-1968. Möglicherweise ist dies die Standardsystem-LANG, aber wenn Sie dies ändern möchten
quelle
Ich musste dieses Problem global für alle Benutzer lösen und nicht für einen bestimmten. Ich habe versucht, / etc / environment und / etc / default / locale einzurichten und dann cron neu zu starten. Das hat nicht geholfen. Die richtige Antwort für mich war die Verwendung des Befehls env im Upstart-Skript (ich verwende den Ubuntu-Server):
env LC_ALL = en_US.UTF-8
Dann habe ich cron neu gestartet und die richtige Mail in utf-8 erhalten.
quelle