我在這裡找到一個腳本
Mac OS X (Lion) Chrome:「使用 Google 搜尋」的捷徑
它展示瞭如何在 OS X Automator 中使用 shell 腳本進行 google 搜尋。
原來的腳本是:
open "http://www.google.com/search?q=$(ruby -rcgi -e 'print CGI.escape $<.read.chomp')"
我正在嘗試使此腳本適應對“gb2312”編碼的漢字的自訂搜尋。
目前我的腳本如下:
open "http://www.yueyv.cn/index.asp?keyword=$(ruby -rcgi -e 'print CGI.escape $<.read.chomp.encode("gb2312")')"
它在終端中運行良好。例如,如果使用字元“一”進行測試,則腳本將開啟http://www.yueyv.cn/index.asp?keyword=%D2%BB/
但是,當將此腳本新增為 OS X automator 中的服務時,它會開啟http://www.yueyv.cn/index.asp?keyword=/
「一」的程式碼不見了。
我用谷歌搜尋了很長一段時間沒有結果。有誰能夠幫助我?謝謝。
答案1
如果您沒有取消勾選“啟動時設定區域設定環境變數”,終端將設定LANG
為預設值。 en_US.UTF-8
Automator 不會,因此 ruby 命令會導致無效位元組序列錯誤。
$ 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
嘗試使用LC_CTYPE=UTF-8 ruby
.或將 ruby 命令替換為iconv -f utf-8 -t gb2312|xxd -p|tr -d \\n|sed 's/../%&/g'
.