Полез тут исправлять один древний код и нарвался на такую бяку:
$q="SELECT * FROM `from_web` WHERE `from`='$nick'"; my $sth = $cdbh->prepare($q); $sth->execute; while(my $row = $sth->fetchrow_hashref) { my $msg="$$row{message} ($$row{web_num},$time)"; ... print $msg print "Тест: $msg" ...
Так вот, первый print выводит корректно строку на русском.
Во втором - "Тест" написано по-русски, а за ним - кракозябры вида "дльÐ& ;#187;Ð". Т.е. как UTF-8 выданный в голом ASCII.
Локаль системы и mysql в utf8. Пробовал врубать и "use utf8;" и setlocale, и вместе и поочереди...
Я так понимаю, что с некоторых пор Perl стал в строках хранить непосредственно их кодировку, что ли?
Но как с этим бороться в моём случае?? Переходом на PHP, что ли? :D Так под PHP нет Net::Jabber (для работы с которым скрипты и используются)