OS X Automator Shell 腳本,用於使用未使用 utf-8 編碼的特殊字元進行自訂搜索

OS X Automator Shell 腳本,用於使用未使用 utf-8 編碼的特殊字元進行自訂搜索

我在這裡找到一個腳本

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-8Automator 不會,因此 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'.

相關內容