У меня есть скрипт ruby, который я хочу запустить как cron.Он отлично работает, когда я запускаю из командной строки на компьютере с Linux. Но когда я запускаю тот же сценарий с помощью задания cron, он не работает.

Я получаю следующую ошибку со строковым кодированием. Не уверен, почему он жалуется, только когда я работаю как cron. Я также установил мою оболочку на /bin /bash в crontab, которая является той же оболочкой, что и моя командная строка.

Я получаю ошибку

в `encode ':"\xE2 "в US-ASCII (Encoding::InvalidByteSequenceError)

строка кода, которая вызывает ошибку

split.encode('utf-8).split(some_str)

1 ответ1

0

Сообщение об ошибке говорит о том, что в среде crontab вы указали в качестве языка US-ASCII и что на таком языке строка "\xE2" не существует. Скорее всего, это связано с тем, что строка имеет кодировку ASCII-8bit, а вам нужно конвертировать ее в UTF-8.

Возможно, что строка была загрязнена каким-то невидимым символом, как это часто бывает, когда вы выполняете вырезание и вставку.

Следующее, которое будет применено перед манипулированием строкой, должно решить вашу проблему:

  new_str = some_str.encode('utf-8', 'binary', :invalid => :replace, :undef => :replace, :replace => '')

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .