use strict; use warnings; use feature qw( say ); use Encode qw( ); my $orig = "\xE8\xAB\x86\x0A"; utf8::encode( my $enc_once = $orig ); utf8::encode( my $enc_twice = $enc_once ); say('length = ', length($orig)); { say("Using utf8::decode"); utf8::decode( my $dec_once = $enc_twice ); utf8::decode( my $dec_twice = $dec_once ); say('length = ', length($dec_twice)); say($orig eq $dec_twice ? 'ok' : 'not ok'); } { say("Using Encode::decode"); my $dec_once = Encode::decode('UTF-8', $enc_twice); my $dec_twice = Encode::decode('UTF-8', $dec_once); say('length = ', length($dec_twice)); say($orig eq $dec_twice ? 'ok' : 'not ok'); }