1

私は、Wx ロギング用の小さなLog::Any::Adapterを作成しようとしています。テスト用に、Wx のLogStderrクラスを使用しています。ただし、STDERR に出力される文字列には 1 文字おきに NULL があるため、私のテストは失敗します。私はWindowsを使用しているので、おそらくUTF-16leだと思います。私は私ができることを知っています

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 でクリップボードにコピーできません!

4

0 に答える 0