Такая проблемка - не получается корректно передать в XLS файл данные из MySQL. MySQL (default charset latin1) Win32
Perl Win32
Сам pl файл в ANSI (cp1251), если в скрипте на русском писать - в Excel падает нормально, а из MySQL ну никак не хочет перекодироваться..
---------
#!/usr/local/bin/perl
use encoding "ru_RU.CP1251";
use Encode;
my $workbook = Spreadsheet::WriteExcel->new('test.xls');
$worksheet = $workbook->add_worksheet('Тест');
$worksheet->write('B5', "№№");
$worksheet->write('C5', "Наименование");
my $i=6;
# @data - массив ссылок на хэши вида $hash{заголовок_столбца}=значение_ячейки из DBI MySQL
foreach my $k (@data) {
$worksheet->write($i,1,$$k{'t1.num'});
$worksheet->write($i,2,$$k{'t1.name'});
my $str = $$k{'t1.name'};
Encode::from_to($str, 'cp1251', 'cp866');
print "\n Имя: $str";
$i++;
}
Заголовок таблички получается нормально - читаемый русский, а в ячейки вставляется в виде:
Àêàäåìèÿ ðàî
Áîãîðîäñêèé õðàì
Áîãîðîäñêèé õðàì
Äîì ïðàâîñóäèÿ
Îáúåäèíåíèå ëèò
Ïðîãîííàÿ 1-ÿ óë.
Õðîìîâà óë.
Õðîìîâà óë.
вывод в консоль в cp866 показывает читаемо.
Пробовал всевозможные комбинации кодирования - результат один - из самого скрипта прописанный текст читается, а пришедший из SQL кодируется нечитаемо =(