use Encode qw( decode ); $s = "高"; print(length($s), "\n"); # 3 $s = decode('utf8', "高"); print(length($s), "\n"); # 1 $s = do { use utf8; "高" }; print(length($s), "\n"); # 1 #### use Encode qw( encode ); my $s = do { use utf8; "高" }; print(length($s), "\n"); # 1 open my $fh, '>:utf8', \$s2; print $fh $s; print(length($s2), "\n"); # 3 $s2 = encode('utf8', $s); print(length($s2), "\n"); # 3 #### use strict; use warnings; use utf8; use Encode qw( decode ); my $chars_src = "采样速率太高"; my $bytes_dst; { open my $fh, '>:utf8', \$bytes_dst; print $fh $chars_src; } my $chars_dst = decode('utf8', $bytes_dst); binmode(STDOUT, ':utf8'); print("$chars_src\n"); print("$chars_dst\n"); #### ... my $bytes_src = encode('utf8', $chars_src); print("$bytes_src\n"); print("$bytes_dst\n"); #### ... binmode(STDOUT, ':utf8'); print("$chars_src\n"); binmode(STDOUT, ':bytes'); print("$bytes_dst\n");