0

是否可以恢复 STDIN 的原始编码,之前修改了哪个编码?

#!/usr/bin/env perl
use warnings;
use strict;

binmode STDIN, ':raw';

# do something here
# ...
# ...

# restore original STDIN encoding
binmode STDIN, $old_encoding;
4

1 回答 1

1

不确定这是否可行,但有:pop伪编码

删除最顶层。为 perl 代码提供了一种操作层堆栈的方法。应该被认为是实验性的。请注意,:pop 仅适用于真实图层,不会撤消 :utf8 等伪图层的效果。一个可能的使用示例可能是:

open($fh,...)
...
binmode($fh,":encoding(...)");  # next chunk is encoded
...
binmode($fh,":pop");            # back to un-encoded

需要一个更优雅(和更安全)的界面。

于 2012-05-04T16:35:13.400 回答