The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Perl Spreadsheet::WriteExcel cp1251"
Отправлено Azudim, 14-Мрт-10 19:36 
Такая проблемка - не получается корректно передать в 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 кодируется нечитаемо =(

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру