3

这个脚本给了我两倍相同的输出。两者之间是否存在无法生存的utf8 encode编码?decodesay

#!/usr/bin/env perl
use warnings;
use 5.16.1;
use Encode qw/encode decode/;

my $my_encoding = 'ISO-8859-7';
binmode STDOUT, ":encoding($my_encoding)";

my $var = "\N{GREEK SMALL LETTER TAU}";
$var .= "\N{GREEK SMALL LETTER OMEGA WITH TONOS}";
$var .= "\N{GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA}";

$var = encode( 'utf8', $var );
$var = decode( $my_encoding, $var );

say $var;

my $test = encode( 'utf8', $var, Encode::FB_CROAK );
$var = decode( 'utf8', $test, Encode::FB_CROAK  );

say $var;
4

1 回答 1

6

如果您尝试对超出目标编码字符集的内容进行编码,它就会发出嘶哑的声音。

utf8是 Perl 用于存储 72 位字符的 Perl 特定编码。它与 UTF-8 类似,但又有所不同。它支持 Perl 支持的每一个字符,所以它永远不会呱呱叫。

另一方面,如果您要使用,如果您尝试对非 Unicode 字符(例如)UTF-8进行编码,它会发出嘶哑的声音。chr(0x200000)

参见::encoding(UTF-8)vs :encoding(utf8)vs:utf8

于 2012-10-05T16:36:46.460 回答