
我有一個 ruby 腳本,我想將其作為 cron 作業運行。但是當我使用 cron 作業運行相同的腳本時,它失敗了。
我收到以下字串編碼錯誤。不知道為什麼它只在我作為 cron 作業運行時才會抱怨。我還在 crontab 中將 shell 設為 /bin/bash,它與命令提示字元的 shell 相同。
我得到的錯誤是
在`encode'中:US-ASCII 上的「\xE2」(Encoding::InvalidByteSequenceError)
導致錯誤的程式碼行是
split.encode('utf-8).split(some_str)
答案1
該錯誤訊息告訴您,您已在環境中將crontab
US-ASCII 設定為您的語言,並且在這種語言中,字串「\xE2」不存在。這很可能是因為該字串是 ASCII-8 位元編碼的,而您需要將其轉換為 UTF-8。
字串可能會被某些不可見的字元污染,因為在進行剪下和貼上時經常會發生這種情況。
以下,適用前操作字串,應該可以解決您的問題:
new_str = some_str.encode('utf-8', 'binary', :invalid => :replace, :undef => :replace, :replace => '')