gpt4 book ai didi

perl - 为什么 encode 删除参数?

转载 作者:行者123 更新时间:2023-12-04 18:05:27 25 4
gpt4 key购买 nike

为什么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 ||
}

最佳答案

它用于重复将数据块传递给 encode 的情况。或 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;

输出
"ABC"
"ABC"
"ABC"

关于perl - 为什么 encode 删除参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29842561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com