是否可以将编码恢复为修改后的STDIN?

时间:2012-05-04 16:01:04

标签: perl encoding stdin

是否可以恢复先前修改过编码的STDIN的原始编码?

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

binmode STDIN, ':raw';

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

# restore original STDIN encoding
binmode STDIN, $old_encoding;

1 个答案:

答案 0 :(得分:1)

不确定这是否有效,但有:pop pseudo-encoding

  

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

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

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