perl 如何消除“宽字打印”?

hrirmatl  于 2022-11-15  发布在  Perl
关注(0)|答案(2)|浏览(163)

我有包含以下内容的文件/tmp/xxx

00000000 D0 BA D0 B8 │ D1 80 D0 B8 │ D0 BB D0 B8 │ D0 BA     к и р и л и к

当我读取文件的内容并打印它时,我得到错误:

Wide character in print at ...

来源是:

use utf8;
open my $fh, '<:encoding(UTF-8)', '/tmp/xxx';
print scalar <$fh>

打印输出为:

кирилик
5anewei6

5anewei61#

您正在打印到不需要UTF8的STDOUT。添加

binmode(STDOUT, "encoding(UTF-8)");

以更改已打开句柄上的内容。

juud5qan

juud5qan2#

use utf8表示Perl希望您的源代码是UTF-8。
open编译指示可以更改标准文件句柄的编码:

use open qw( :std :encoding(UTF-8) );

而且,无论如何处理您的输出都需要使用UTF-8。如果您想在终端中正确地看到它,那么您需要正确地设置它(但这与Perl无关)。

相关问题