当我运行这个脚本时,我得到 8 行输出而不是 2 行。
#!perl
use strict;
use warnings;
use 5.10.1;
use PerlIO::encoding;
use Encode qw(:fallbacks);
$PerlIO::encoding::fallback = Encode::FB_HTMLCREF;
binmode STDOUT, ":encoding(cp850)";
say "TEST";
say "Hell\x{263a}\x{263b}llo.txt";
输出:
# TEST
# TEST
# Hell☺☻llo.txt
# TEST
# Hell☺☻llo.txt
# TEST
# Hell☺☻llo.txt
#
为什么这个脚本会输出这么多行?
最佳答案
是a really old bug: RT#40401 . RT#29720可能是同一个错误,这使得它已经有将近 10 年的历史了。 (那是它被报道的时候;我猜这个错误可以追溯到 $PerlIO::encoding::fallback
首次实现的时候。)
关于windows - PerlIO::encoding 的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21465635/