
Ich habe ein Ruby-Skript, das ich als Cron-Job ausführen möchte. Es läuft einwandfrei, wenn ich es über die Eingabeaufforderung auf einem Linux-Rechner ausführe. Aber wenn ich dasselbe Skript mit einem Cron-Job ausführe, schlägt es fehl.
Ich erhalte den folgenden Fehler bei der Zeichenfolgencodierung. Ich bin mir nicht sicher, warum es nur auftritt, wenn ich es als Cron-Job ausführe. Ich habe meine Shell in Crontab auch auf /bin/bash eingestellt, was dieselbe Shell wie meine Eingabeaufforderung ist.
Der Fehler, den ich bekomme, ist
in „encode“: „\xE2“ auf US-ASCII (Encoding::InvalidByteSequenceError)
Die Codezeile, die den Fehler verursacht, ist
split.encode('utf-8).split(some_str)
Antwort1
Die Fehlermeldung besagt, dass Sie in der crontab
Umgebung US-ASCII als Sprache eingestellt haben und dass in dieser Sprache die Zeichenfolge "\xE2" nicht existiert. Dies liegt höchstwahrscheinlich daran, dass die Zeichenfolge ASCII-8-Bit-kodiert ist, während Sie sie in UTF-8 konvertieren müssen.
Es ist möglich, dass die Zeichenfolge durch unsichtbare Zeichen verunreinigt wurde, wie es beim Ausschneiden und Einfügen häufig vorkommt.
Folgendes ist anzuwendenVorDurch Bearbeiten der Zeichenfolge sollte Ihr Problem gelöst sein:
new_str = some_str.encode('utf-8', 'binary', :invalid => :replace, :undef => :replace, :replace => '')