perl – 为什么编码删除参数?

前端之家收集整理的这篇文章主要介绍了perl – 为什么编码删除参数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果CHECK设置为true值,为什么encode会删除传递的参数?

#!/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 ||
}

解决方法

它适用于您重复传递数据块进行编码或解码的情况.我们的想法是该函数删除它已翻译的字符串部分,并且您只需将下一个块附加到剩下的部分.它对于处理可跨两个块分割的多字节编码很有用.

如果您不想要此行为,则可以将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',FB_CROAK | LEAVE_SRC );
dd $decoded;
dd $encoded;

产量

"ABC"
"ABC"
"ABC"

猜你在找的Perl相关文章