为OSX Mountain Lion修复osascript剪贴板

时间:2012-07-25 18:00:42

标签: ruby applescript osx-mountain-lion osascript

在我的Ruby应用程序中,我长时间使用以下函数写入剪贴板:

def pbcopy(text)
  IO.popen("osascript -e 'set the clipboard to do shell script \"cat\"'","w+") {|pipe| pipe << text}
end

我从here获得了这个代码,它取代了我之前通过反引号使用pbpaste,因为它似乎更可靠的UTF8和其他东西。它一直运行良好,但是对于新的OSX Mountain Lion,它停止了工作。 osascript -e'将剪贴板设置为“hi”'效果很好,所以它可能是管道不起作用的东西。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

我刚试过这个并且它可以正常使用UTF-8字符:

def pbcopy(text)
  IO.popen("pbcopy", "w+") {|pipe| pipe << text}
end

pbcopy "smörgåsbord"
puts `pbpaste`

答案 1 :(得分:0)

do shell script "cat"似乎不再返回STDIN。

您可以使用on run处理程序获取参数。 {input, parameters}表单似乎只适用于Automator。

system("osascript", "-e", "on run {input}
set the clipboard to input
end", "あä")

您也可以设置__CF_USER_TEXT_ENCODING variable

IO.popen("__CF_USER_TEXT_ENCODING=$UID:0x8000100:0x8000100 pbcopy", "w") { |i|
  i << "あä"
}