Использование Unicode в Perl

У любого, кто с Perl работал не так мало времени не один раз возникала ошбика упоминающая в себе Wide character. Это все из-за того, что Perl с unicode плохо дружит и реализация поддержки самого unicode прилеплена с боку. Все это оставляет желать только лучшего. Вот небольшой сборник рецептов для помощи, если вдруг возникла проблема.

use utf8;

Часто решает проблему, но если не решило, то стоит отключить сразу же для предотвращения ошибок в следующих способах.

Переменная среды выполенения:

export PERL_UNICODE=SDL

Командная строка:

perl -CSDL -le 'print "\x{1815}"';

binmode:

binmode(STDOUT, ":utf8");
binmode(STDIN, ":encoding(utf8)");

PerlIO:

open my $fh, ">:utf8", $filename
    or die "could not open $filename: $!\n";

open my $fh, "<:encoding(utf-8)", $filename
    or die "could not open $filename: $!\n";

open pragma:

use open ":encoding(utf8)";
use open IN => ":encoding(utf8)", OUT => ":utf8";
# or
use open qw/:std :utf8/;

Примеры приведены отсюда.

А еще полезно почитать тут.

comments powered by Disqus