Стоит Perl 5.8.4, DBI 1.43, MySQL 4.0.13, Apache 2.0.50 всё под Windows XP SP2 (русский).
Ещё используется HTML::Template.
Гоняю тестовый скрипт, который получает данные из таблицы.
Вот фрагмент:
##########
my $q = "SELECT * FROM region";
$sth = $dbh->prepare($q) || die "Couldn\'t prepare statement: " . $dbh->errstr;
$sth->execute() || die "Couldn\'t execute statement: " . $sth->errstr;
while ($i = $sth->fetchrow_hashref()) {
$regions .= $i->{id};
$regions .= " ";
$regions .= $i->{name};
$regions .= "\\n";
}
##########
$regions заносится как значение переменной в шаблон HTML::Template и выводится.
Всё работает, но русские символы выводятся на странице в нечитаемом виде:
115 “«мп_®ўбЄ
116 “д
117 • _вл-Њ _бЁ©бЄ
118 —Ґ«пЎЁ_бЄ
119 џЄгвбЄ
Другие русские символы (текст не из базы данных), выводящиеся через template на той же самой
странице, выводятся нормально.
При этом в консоли MySQL всё выводится правильно:
| 116 | Уфа
| 117 | Ханты-Мансийск
| 118 | Челябинск
| 119 | Якутск
Запустил этот скрипт из командной строки, - всё наоборот, - русский текст, доставаемый из
базы данных, выводится правильно, а другой руский текст (не из базы) - неправильно.
Как заставить русский текст выводиться нормально?