В сообщении от 16 Июнь 2003 17:38 Alexey Tourbin написал: > On Mon, Jun 16, 2003 at 04:26:48PM +0400, Епифанов Сергей wrote: > > > #se locale; > > > use encoding 'utf-8'; > > > > меняю cp1251 на utf-8 - вместо 'п(1087) р(1088) с(1089) > > т(1090)' вижу '(0) (0) (0) (0)' > > Так исходно файл должен быть в utf8! > Я проверял так: > > $ cat utf-test.pl > use strict; > use POSIX; > #se locale; > use encoding 'utf-8'; > > my @l1 = ("п", "р", "с", "т"); > my @l2 = qw(п р с т); > print "$_(", ord, ") " foreach sort(@l1); print "\n"; > print "$_(", ord, ") " foreach sort(@l2); print "\n"; > > print("аБвгд" =~ m/б/i? "1": "0", "\n"); > print("абвгд" =~ m/б/i? "1": "0", "\n"); > print(lc("аБвгд") =~ m/б/? "1":"0", "\n"); > > $ iconv -t utf-8 utf-test.pl | perl | iconv -f utf-8 > п(1087) р(1088) с(1089) т(1090) > п(1087) р(1088) с(1089) т(1090) > 1 > 1 > 1 > $ Интересно, я еще раз попробовал вместо utf-8 использовать cp1251. Интересно, что если программа такая: use strict; use POSIX; use locale; use encoding 'cp1251'; my @l1 = ("п", "р", "с", "т"); my @l2 = qw(п р с т); print "$_(", ord, ") " foreach sort(@l1); print "\n"; print "$_(", ord, ") " foreach sort(@l2); print "\n"; print("аБвгд" =~ m/б/i? "1": "0", "\n"); print("абвгд" =~ m/б/i? "1": "0", "\n"); print(lc("аБвгд") =~ m/б/? "1":"0", "\n"); То она пишет: п(1087) т(1090) с(1089) р(1088) п(1087) р(1088) с(1089) т(1090) 0 0 1 А если из программы убрать use locale; то она выводит: п(1087) р(1088) с(1089) т(1090) п(1087) р(1088) с(1089) т(1090) 1 1 1 То бишь команда 'use locale' рушит всю работу!!! -- С уважением, Епифанов Сергей