我正在尝试为Wx日志记录编写一个小Log::Any::Adapter,并且为了测试我正在使用Wx的LogStderr类。但是,我的测试失败了,因为打印到STDERR的字符串将所有其他字符都作为NULL。我认为它可能是UTF-16le,因为我在Windows上。我知道我可以做到
decode('UTF-16le', $_)
但有没有办法可以确定编码,以便代码适用于所有系统?
我的尝试:
use strict;
use warnings;
use Test::More tests => 1;
use Wx;
use Capture::Tiny qw(capture_stderr);
use Encode::Locale;
use Encode qw(decode);
Wx::Log::SetActiveTarget(Wx::LogStderr->new());
my $stderr = capture_stderr { Wx::LogMessage('hello!') };
$stderr = decode(console_in => $stderr); #doesn't work; still has NUL's
like($stderr, qr/hello!/, 'Wx logs correctly to STDERR');
我会粘贴输出,但是对于所有的NUL,我无法将其复制到我的剪贴板上!