有没有一种简单的方法可以将unicode字符串发送到perl中的Windows剪贴板?

时间:2019-01-11 01:48:00

标签: perl

是否有一种简单的方法可以将unicode字符串发送到perl中的Windows剪贴板?我已经尝试过Win32 :: Clipboard,但似乎不起作用,ü会变得毫无意义。

use Win32::Clipboard;

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

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

1 个答案:

答案 0 :(得分:0)

使用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));