运行 ruby​​ 脚本作为 cron 作业时出现问题

运行 ruby​​ 脚本作为 cron 作业时出现问题

我有一个 ruby​​ 脚本,我想将其作为 cron 作业运行。当我在 Linux 机器上通过命令提示符运行时,它运行得很好。但是当我使用 cron 作业运行同一个脚本时,它失败了。

我在字符串编码时收到以下错误。不知道为什么它只在我作为 cron 作业运行时才会出现错误。我还在 crontab 中将 shell 设置为 /bin/bash,这与我的命令提示符是同一个 shell。

我得到的错误是

在 US-ASCII 上的 `encode': "\xE2" 中(Encoding::InvalidByteSequenceError)

导致错误的代码行是

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

答案1

错误消息告诉您,您在环境中将crontabUS-ASCII 设置为语言,并且在该语言中不存在字符串“\xE2”。最有可能的是,这是因为该字符串是 ASCII-8bit 编码的,而您需要将其转换为 UTF-8。

字符串可能被某些不可见字符污染了,就像在进行剪切和粘贴时经常发生的那样。

适用以下内容操作字符串应该可以解决你的问题:

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

相关内容