Eu encontro um script aqui
Mac OS X (Lion) Chrome: atalho para "Pesquisar no Google"
que mostra como fazer pesquisa no Google usando shell script no OS X Automator.
O roteiro original é:
open "http://www.google.com/search?q=$(ruby -rcgi -e 'print CGI.escape $<.read.chomp')"
Estou tentando adaptar este script para uma pesquisa personalizada de caracteres chineses codificados em "gb2312".
Atualmente meu script é assim:
open "http://www.yueyv.cn/index.asp?keyword=$(ruby -rcgi -e 'print CGI.escape $<.read.chomp.encode("gb2312")')"
Funciona bem no terminal. Por exemplo, se estiver testando com o caractere "一", o script abrehttp://www.yueyv.cn/index.asp?keyword=%D2%BB/
Porém ao adicionar este script como um serviço no OS X automator, ele abrehttp://www.yueyv.cn/index.asp?keyword=/
O código de "一" desapareceu.
Pesquisei no Google por um bom tempo sem resultado. Alguém pode me ajudar? Obrigado.
Responder1
O terminal define LANG
um valor como en_US.UTF-8
o padrão se você não tiver desmarcado "Definir variáveis de ambiente de localidade na inicialização". O Automator não, então o comando Ruby resulta em um erro de sequência de bytes 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'
.