首页 > 解决方案 > 有没有一种简单的方法可以在 perl 中将 unicode 字符串发送到 Windows 剪贴板?

问题描述

有没有一种简单的方法可以在 perl 中将 unicode 字符串发送到 Windows 剪贴板?我试过Win32::Clipboard,但是好像不行,ü会变成废话。

use Win32::Clipboard;

$CLIP = Win32::Clipboard();
$CLIP->Set('Büchner');

$CLIP->WaitForChange();
print "Clipboard has changed!\n";

标签: perl

解决方案


Win32::Clipboard您只能将CF_TEXT(即在当前代码页中编码)写入剪贴板。CF_UNICODETEXT不支持。但是您可以使用当前代码页对要写入剪贴板的字符串进行编码。

可以使用 获取代码页Win32::GetACP()。它需要cp预先添加,以便encode()可以使用它。

use strict;
use warnings;
use utf8;

use Encode qw(encode);
use Win32;
use Win32::Clipboard;

my $to_clip = 'Tschüß!';

my $cp = Win32::GetACP();

my $clip = Win32::Clipboard();

$clip->Set(encode("cp$cp", $to_clip));

推荐阅读