OS X Automator Shell Script para pesquisa personalizada com caractere especial não codificado com utf-8

1

Eu acho um script aqui

Mac OS X (Lion) Chrome: atalho para "Pesquisar com o Google"

que mostra como fazer a pesquisa no google usando o shell script no OS X Automator.

O script original é:

open "http://www.google.com/search?q=$(ruby -rcgi -e 'print CGI.escape $<.read.chomp')"

Estou tentando adaptar esse script a uma pesquisa personalizada de caracteres chineses codificados em "gb2312".

Atualmente, meu roteiro é como:

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 testar com o caractere "一", o script será aberto no link

No entanto, ao adicionar esse script como um serviço no automator OS X, ele abre o link

O código de "一" desapareceu.

Eu pesquisei por um bom tempo sem resultado. Alguém pode me ajudar? Obrigado.

    
por rouraito 04.03.2014 / 17:32

1 resposta

1

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' .

    
por 05.03.2014 / 10:37