OS X Automator Shell Script para pesquisa personalizada com caracteres especiais não codificados com utf-8

OS X Automator Shell Script para pesquisa personalizada com caracteres especiais não codificados com utf-8

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 LANGum valor como en_US.UTF-8o 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'.

informação relacionada