如何使用open pragma的utf8编码

Pav*_*sov 2 perl utf-8 character-encoding

utf8::encode在使用pragma时遇到问题use open qw(:std :utf8);

#!/usr/bin/env perl

use v5.16;
use utf8;
use open qw(:std :utf8);

use Data::Dumper;

my $word = "+????";
say Dumper($word);
say utf8::is_utf8($word) ? 1 : 0;

utf8::encode($word);
say Dumper($word);
say utf8::is_utf8($word) ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)

产量

$VAR1 = "+\x{431}\x{430}\x{43d}\x{43a}";
1
$VAR1 = '+банк';
0
Run Code Online (Sandbox Code Playgroud)

当我删除这个pragma use open qw(:std :utf8);,一切都很好.

$VAR1 = "+\x{431}\x{430}\x{43d}\x{43a}";
1
$VAR1 = '+????';
0
Run Code Online (Sandbox Code Playgroud)

先谢谢你!

ike*_*ami 6

如果你要更换utf8::encode($word);use open qw(:std :utf8);,你实际上需要删除utf8::encode($word);.在不起作用的版本中,您进行了两次编码.