여기서 스크립트를 찾았습니다.
Mac OS X(Lion) Chrome: "Google로 검색" 바로가기
OS X Automator에서 쉘 스크립트를 사용하여 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 자동화 프로그램의 서비스로 추가하면 열립니다.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'
.