本帖最后由 victorwoo 于 2014-7-21 16:57 编辑
原始链接:用 PowerShell 输出中文到剪贴板
发表日期:2014-07-22
# 方法一 通过 clip.exe
用 PowerShell 将字符串输出到剪贴板的最简单方式是:复制代码 不过直接这么使用的话,如果待输出的字符串是包含中文的,那么剪贴板里的内容会出现“乱码”:复制代码 剪贴板里的内容变成:复制代码 这是因为为了兼容旧程序,管道操作缺省将字符串采用 ASCII 编码,因此对于中文字符,被转换成了“??”。解决方案如下:- $OutputEncoding = [Console]::OutputEncoding
- 'abc中文def' | clip.exe
复制代码 # 方法二 通过 WPF 方法
以 `-sta` 参数启动 PowerShell 后,执行以下代码:- Add-Type -Assembly PresentationCore
- [Windows.Clipboard]::SetText('abc中文def')
复制代码 PowerShell 2.0 的控制台,缺省设置是 MTA;PowerShell 3.0 的控制台,缺省设置是 STA。
关于 `-sta` 的知识,请参见PowerShell中的 STA和MTA。
参考材料:
- $OutputEncoding to the rescue
- Powershell能否将文件列表写入剪切板
- PowerShell中的 STA和MTA
- PowerShell.exe Command-Line Help
- QQ 群 *PowerShell技术交流(271143343) 2014-07-01 的讨论 |