【问题标题】:Why does encode delete the argument?为什么编码删除参数?
【发布时间】:2015-07-02 18:24:29
【问题描述】:

如果CHECK 设置为真值,为什么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 ||
}

【问题讨论】:

    标签: perl encode


    【解决方案1】:

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

    如果您不希望这种行为,那么您可以将Encode::LEAVE_SRC 位 OR 到第三个参数中。像这样

    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"
    

    【讨论】:

      猜你喜欢
      • 2021-05-07
      • 2015-11-30
      • 2018-03-24
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-10
      相关资源
      最近更新 更多