windows - PerlIO::encoding 的意外行为

标签 windows perl encoding io fallback

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

相关文章:

database - PostgreSQL 图形安装程序 : The specified service does not exist as an installed service

wpf - xaml Scrollviewer - 禁用 Overscrolling/rubber-band-effect/snapback-effect/bouncing of whole window

regex - 如何用 Perl 替换文件中的特定 IP?

c# - 怎么改编码?

objective-c - NSString 编码特殊字符,如 !@#$%^&

c# - 默认情况下,如何将新的 Windows 用户添加到用户组

c++ - 在 Emacs 中保存-编译-执行 C++ 程序的单一快捷方式?

windows - 与 Windows dir 命令相比,为什么运行 opendir、readdir、stat 这么慢?

perl chdir 不工作,不改变目录

java - Ant 替换任务损坏 UTF-8 文件中的符号