【问题标题】:Unexpected behavior with PerlIO::encodingPerlIO::encoding 的意外行为
【发布时间】:2014-02-23 07:05:46
【问题描述】:

当我运行这个脚本时,我得到了 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
#

为什么这个脚本会输出这么多行?

【问题讨论】:

  • 在我看来是个错误。
  • 在 perl 5.18.2 上得到确认,同样的情况也发生在其他编码,如 utf8 上。看起来很像FB_HTMLCREF 的东西。

标签: windows perl encoding io fallback


【解决方案1】:

它是a really old bug: RT#40401RT#29720 可能是同一个错误,这使得它已有近 10 年的历史。 (这只是它被报告的时候;我猜这个错误可以追溯到 $PerlIO::encoding::fallback 首次实施的时候。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-04
    • 2016-07-16
    • 2016-05-10
    • 2020-07-23
    • 2021-08-23
    • 2021-11-16
    • 2017-10-20
    • 2016-06-29
    相关资源
    最近更新 更多