Почему Term :: Size, кажется, портит выходную кодировку Perl? - PullRequest
1 голос
/ 21 марта 2010

Модуль Term :: Size перемешивает кодировку. Как я могу это исправить?

#!/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;

Выход:

Hallo
140
H ll

Ответы [ 2 ]

1 голос
/ 21 марта 2010

Установка binmode после получения количества столбцов, кажется, помогает:

say $string;

my $columns = ( Term::Size::chars *STDOUT{IO} )[0];
binmode STDOUT, ':encoding(UTF-8)';

say $columns;
say $string;

Выходы

Hällö
80
Hällö


Странно то, что этот код прекрасно работает с Perl 5.8 (вывод правильный) без необходимости сбрасывать binmode

0 голосов
/ 17 мая 2010

Или используя "символы":

#!/usr/bin/env perl
use strict;
use warnings;
use 5.012;
use utf8;
binmode STDOUT, ':encoding(UTF-8)';
use Term::Size qw(chars);

my $string = 'Hällö';
say $string;

my $columns = ( chars )[0];

say $columns;
say $string;

Выход:

Hallo
82
Hällö

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...