Есть ли простой способ отправить строку Unicode в буфер обмена Windows в Perl? - PullRequest
0 голосов
/ 11 января 2019

Есть ли простой способ отправить строку Unicode в буфер обмена Windows в Perl? Я пробовал Win32 :: Clipboard, но, кажется, не работает, ü станет ерундой.

use Win32::Clipboard;

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

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

1 Ответ

0 голосов
/ 11 января 2019

С помощью 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...