1

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

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

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

4

2 回答 2

0

I just tried this and it worked fine with UTF-8 characters:

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

pbcopy "smörgåsbord"
puts `pbpaste`
于 2012-07-28T09:57:12.270 回答
0

do shell script "cat"似乎不再返回标准输入。

不过,您可以使用处理程序获取参数on run。该{input, parameters}表格似乎仅在 Automator 中有效。

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

您还可以设置__CF_USER_TEXT_ENCODING 变量

IO.popen("__CF_USER_TEXT_ENCODING=$UID:0x8000100:0x8000100 pbcopy", "w") { |i|
  i << "あä"
}
于 2012-07-30T11:28:17.467 回答