为什么 Term::Size 似乎搞乱了 Perl 的输出编码?
Term::Size-module 混淆了编码。我该如何解决这个问题?
#!/usr/bin/env perl
use warnings; use strict;
use 5.010;
use utf8;
binmode STDOUT, ':encoding(UTF-8)';
use Term::Size;
my $string = 'Hällö';
say $string;
my $columns = ( Term::Size::chars *STDOUT{IO} )[0];
say $columns;
say $string;
输出:
哈勒
140
H�ll�
The Term::Size-module jumbles up the encoding. How can I fix this?
#!/usr/bin/env perl
use warnings; use strict;
use 5.010;
use utf8;
binmode STDOUT, ':encoding(UTF-8)';
use Term::Size;
my $string = 'Hällö';
say $string;
my $columns = ( Term::Size::chars *STDOUT{IO} )[0];
say $columns;
say $string;
Output:
Hällö
140
H�ll�
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
获取列数后设置 binmode 似乎可以解决问题
:
奇怪的是,这段代码在 perl 5.8 上运行良好(输出是正确的),而无需重置 binmode
Setting the binmode after getting the column count seems to do the trick:
Outputs
The strange thing is that this code works fine with perl 5.8 (the output is correct) without having tho reset the binmode
或者使用“chars”:
输出:
Or using "chars":
Output: