用 PowerShell 输出中文到剪贴板
方法一 通过 clip.exe
用 PowerShell 将字符串输出到剪贴板的最简单方式是:
'abc' | clip.exe
不过直接这么使用的话,如果待输出的字符串是包含中文的,那么剪贴板里的内容会出现“乱码”:
'abc中文def' | clip.exe
剪贴板里的内容变成:
abc??def
这是因为为了兼容旧程序,管道操作缺省将字符串采用 ASCII 编码,因此对于中文字符,被转换成了“??”。解决方案如下:
$OutputEncoding = [Console]::OutputEncoding
'abc中文def' | clip.exe
方法二 通过 WPF 方法
以 -sta
参数启动 PowerShell 后,执行以下代码:
Add-Type -Assembly PresentationCore
[Windows.Clipboard]::SetText('abc中文def')
PowerShell 2.0 的控制台,缺省设置是 MTAPowerShell 3.0 的控制台,缺省设置是 STA。
关于 -sta
的知识,请参见PowerShell中的 STA和MTA。
参考材料:
用 PowerShell 输出中文到剪贴板
http://blog.vichamp.com/2014/07/21/forward-chinese-text-into-clipboard/