
У меня есть скрипт ruby, который я хочу запустить как cron job. Он отлично работает, когда я запускаю его через командную строку на машине linux. Но когда я запускаю тот же скрипт с помощью cron job, он терпит неудачу.
Я получаю следующую ошибку с кодировкой строки. Не уверен, почему он жалуется только когда я запускаю как задание cron. Я также установил оболочку /bin/bash в crontab, которая является той же оболочкой, что и моя командная строка.
Я получаю ошибку
в `encode': "\xE2" в US-ASCII (Encoding::InvalidByteSequenceError)
строка кода, вызывающая ошибку, это
split.encode('utf-8).split(some_str)
решение1
Сообщение об ошибке говорит вам, что вы установили в среде crontab
US-ASCII в качестве языка, и что в таком языке строка "\xE2" не существует. Скорее всего, это связано с тем, что строка имеет кодировку ASCII-8bit, а вам нужно преобразовать ее в UTF-8.
Вполне возможно, что строка была загрязнена каким-то невидимым символом, как это часто случается при копировании и вставке.
Применяется следующее:доМанипулирование строкой должно решить вашу проблему:
new_str = some_str.encode('utf-8', 'binary', :invalid => :replace, :undef => :replace, :replace => '')