找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18710|回复: 1

[原创教程] 用 PowerShell 输出中文到剪贴板

[复制链接]
发表于 2014-7-21 11:14:02 | 显示全部楼层 |阅读模式
本帖最后由 victorwoo 于 2014-7-21 16:57 编辑

原始链接:用 PowerShell 输出中文到剪贴板
发表日期:2014-07-22


# 方法一 通过 clip.exe

用 PowerShell 将字符串输出到剪贴板的最简单方式是:

  1. 'abc' | clip.exe
复制代码
不过直接这么使用的话,如果待输出的字符串是包含中文的,那么剪贴板里的内容会出现“乱码”:

  1. 'abc中文def' | clip.exe
复制代码
剪贴板里的内容变成:

  1. abc??def
复制代码
这是因为为了兼容旧程序,管道操作缺省将字符串采用 ASCII 编码,因此对于中文字符,被转换成了“??”。解决方案如下:

  1. $OutputEncoding = [Console]::OutputEncoding
  2. 'abc中文def' | clip.exe
复制代码
# 方法二 通过 WPF 方法

以 `-sta` 参数启动 PowerShell 后,执行以下代码:

  1. Add-Type -Assembly PresentationCore
  2. [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 的讨论

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 $OutputEncoding = [Console]::OutputEncod

查看全部评分

发表于 2014-7-21 17:46:21 | 显示全部楼层
$OutputEncoding = [Console]::OutputEncoding

原来如此,点赞!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 20:39 , Processed in 0.018240 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表