Encuentro un guión aquí
Mac OS X (Lion) Chrome: acceso directo para "Buscar con Google"
que muestra cómo realizar una búsqueda en Google usando un script de shell en OS X Automator.
El guión original es:
open "http://www.google.com/search?q=$(ruby -rcgi -e 'print CGI.escape $<.read.chomp')"
Estoy intentando adaptar este script a una búsqueda personalizada de caracteres chinos codificados en "gb2312".
Actualmente mi script dice así:
open "http://www.yueyv.cn/index.asp?keyword=$(ruby -rcgi -e 'print CGI.escape $<.read.chomp.encode("gb2312")')"
Funciona bien en la terminal. Por ejemplo, si realiza la prueba con el carácter "一", se abre el scripthttp://www.yueyv.cn/index.asp?keyword=%D2%BB/
Sin embargo, al agregar este script como servicio en OS X Automator, se abrehttp://www.yueyv.cn/index.asp?keyword=/
El código de "一" desapareció.
He buscado en Google durante bastante tiempo sin obtener resultado. Alguien puede ayudarme? Gracias.
Respuesta1
La terminal se establece LANG
en un valor como en_US.UTF-8
el predeterminado si no ha desmarcado "Establecer variables de entorno local al inicio". Automator no lo hace, por lo que el comando Ruby genera un error de secuencia de bytes no válida.
$ 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
Tratar de usar LC_CTYPE=UTF-8 ruby
. O reemplace el comando Ruby con iconv -f utf-8 -t gb2312|xxd -p|tr -d \\n|sed 's/../%&/g'
.