【发布时间】:2015-09-30 21:16:17
【问题描述】:
Encode::encode 的文档说:
编码
$octets = encode(ENCODING, STRING[, CHECK]) 编码标量值 STRING 从 Perl 的内部形式转化为 ENCODING 并返回一个序列 字节数。
这是一个测试脚本:
use feature qw(say);
use strict;
use warnings;
use utf8;
use open qw( :std :utf8 );
use Encode qw(encode);
my $str = 'æ';
say "str = '$str'";
my $str2 = encode('UTF-8', $str, Encode::FB_CROAK);
say "str = '$str'";
输出是:
str = 'æ'
str = ''
为什么在调用encode 后$str 会被删除?这是意料之中的吗?
【问题讨论】:
-
这似乎是一个错误。使用
encode('UTF-8', "$str", Encode:::FB_CROAK)作为解决方法。 -
当然 UTF8 编码很流行,如此流行以至于他们专门为它命名了一个子程序。您可以在没有支票的情况下拨打电话:
encode_utf8($str) -
我认为这回答了问题stackoverflow.com/a/29843396/198183
-
@sid_com 谢谢,这就是答案。所以你可以将此问题标记为重复..
-
@HåkonHægland 不是完全相同的副本。尽管它们在概念上很接近并且它们的问题是相同的,但另一个问题专门要求一个真实的检查值。这个问题更能说明问题。