你倒过来了。MIME::Base64和编码一样,只处理字节。如果您已解码文本,则必须先对其进行编码。
这证明了它处理任意字节的能力:
use MIME::Base64 qw( decode_base64 encode_base64 );
my $expected = join '', map chr, 0x00..0xFF;
my $base64 = encode_base64($expected);
print($base64);
my $got = decode_base64($base64);
print($got eq $expected ? "ok" : "error", "\n");
AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4
OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3Bx
cnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmq
q6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj
5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==
ok
这表明它无法处理尚未首先编码为字节的文本:
use MIME::Base64 qw( encode_base64 );
encode_base64("\x{2660}");
print("ok\n");
Wide character in subroutine entry at a.pl line 2.