为什么编码删除参数?

时间:2015-04-24 08:37:55

标签: perl encode

如果encode设置为真值,为什么CHECK会删除传递的参数?

#!/usr/bin/env perl
use warnings;
use strict;
use utf8;
use Encode;

my $decoded = 'h';
if ( eval { encode( 'utf-8', $decoded, 1 ); 1 } ) {
    print "|$decoded|\n";    # prints ||
}

1 个答案:

答案 0 :(得分:7)

用于您反复将数据块传递到U.uencode的情况。我们的想法是该函数将删除它已翻译的字符串部分,并且您只需将下一个块附加到剩下的部分。它对于处理可能分成两个块的多字节编码很有用。

如果您不想要此行为,则可以将decode位与第三个参数进行OR运算。喜欢这个

Encode::LEAVE_SRC

<强>输出

use utf8;
use strict;
use warnings;

use Encode qw/ encode decode FB_CROAK LEAVE_SRC /;
use Data::Dump;

my $decoded = 'ABC';
dd $decoded;
my $encoded = encode( 'UTF-8', $decoded, FB_CROAK | LEAVE_SRC );
dd $decoded;
dd $encoded;