O terminal define LANG
para um valor como en_US.UTF-8
por padrão, se você não tiver desmarcado "Definir variáveis de ambiente de local na inicialização". O Automator não, portanto, o comando ruby resulta em um erro de seqüência de byte inválido.
$ unset LANG
$ echo 一|ruby -rcgi -e 'puts CGI.escape $<.read.chomp.encode("gb2312")'
-e:1:in 'encode': "\xE4" on US-ASCII (Encoding::InvalidByteSequenceError)
from -e:1:in '<main>'
$ echo 一|LC_CTYPE=UTF-8 ruby -rcgi -e 'puts CGI.escape $<.read.chomp.encode("gb2312")'
%D2%BB
Tente usar LC_CTYPE=UTF-8 ruby
. Ou substitua o comando ruby por iconv -f utf-8 -t gb2312|xxd -p|tr -d \n|sed 's/../%&/g'
.