在我的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”'效果很好,所以它可能是管道不起作用的东西。任何帮助将不胜感激!
答案 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 << "あä"
}