
cron 작업으로 실행하고 싶은 루비 스크립트가 있습니다. Linux 시스템에서 명령 프롬프트를 실행할 때 완벽하게 실행됩니다. 하지만 cron 작업을 사용하여 동일한 스크립트를 실행하면 실패합니다.
문자열 인코딩에 다음과 같은 오류가 발생합니다. 왜 cron 작업으로 실행할 때만 불평하는지 잘 모르겠습니다. 또한 crontab에서 쉘을 /bin/bash로 설정했는데, 이는 명령 프롬프트와 동일한 쉘입니다.
내가 얻는 오류는
`인코드': US-ASCII의 "\xE2"(인코딩::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 => '')