![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Новичок в perl |
|
|||
|
Unregistered |
Вообщем проблема такая:
Есть мускулевская база, в ней записи на русском в cp1251. Есть скрипт: #!/usr/bin/perl $| = 1; use lib "/home/unumber/perl/lib/perl5/site_perl/5.8.6/"; use strict; use Spreadsheet::WriteExcel; use DBI; use CGI::Carp qw(fatalsToBrowser); use encoding 'cp1251', STDIN=>'cp1251', STDOUT=>'cp1251'; # Set the filename and send the content type my $filename ="price.xls"; print "Content-type: application/vnd.ms-excel\n"; # The Content-Disposition will generate a prompt to save the file. If you want # to stream the file to the browser, comment out the following line. print "Content-Disposition: attachment; filename=$filename\n"; print "\n"; # Create a new workbook and add a worksheet. The special Perl filehandle - will # redirect the output to STDOUT # my $workbook = Spreadsheet::WriteExcel->new("-"); my $worksheet = $workbook->add_worksheet(); # Set the column width for column 1 $worksheet->set_column(0, 0, 40); # Create a format my $format = $workbook->add_format(); $format->set_bold(); $format->set_size(15); $format->set_color('red'); #print "Content-Type: text/html\n\n"; my $dbh=DBI->connect('DBI:mysql:server','uname','passwd'); my $SQL="SELECT * FROM price ORDER BY parent, name DESC"; my $sth=$dbh->prepare($SQL); $sth->execute(); my $row=0; while (my ($id, $parent, $name, $text, $price, $foto) = $sth->fetchrow_array()) { my $test = "Строка по-русски"; $worksheet->write($row, 0, $price, $format); $row = $row +1; } Скрипт отдает экселевский файл, но кодировка неправильная. При этом если в строке "$worksheet->write($row, 0, $price, $format);" $price заменить на $test, то все получается шоколадно. Дяденьки, поможите кто-нить... |
|||
|
||||
| BlackLFL |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 15.9.2005 Где: Москва Репутация: 3 Всего: 12 |
а в какой кодировке отдает данные Mysql?
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
BlackLFL
Судя по всему в 1251 |
|||
|
||||
| BlackLFL |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 15.9.2005 Где: Москва Репутация: 3 Всего: 12 |
мне все-таки кажется надо проверить в какой кодировке отдает Mysql |
||||
|
|||||
| Guest |
|
|||
|
Unregistered |
BlackLFL
Мускуль что - перекодировать будет мне из одной кодировки в другую на лету?!! По-моему он отдает в той кодировке, в которой я ему это записывал. А кроме того опытным путем установлено что 1251. |
|||
|
||||
| BlackLFL |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 15.9.2005 Где: Москва Репутация: 3 Всего: 12 |
2Guest, да будет, см. код ниже.
какой версии Spreadsheet::WriteExcel ?
так же попробуйте
Это сообщение отредактировал(а) BlackLFL - 22.9.2005, 15:55 |
||||
|
|||||
| Guest |
|
|||
|
Unregistered |
BlackLFL
Версия 2,14. Спасибо, щас попробую |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
BlackLFL
Нет, ни то, ни другое не помогло. Результат нулевой. |
|||
|
||||
| BlackLFL |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 15.9.2005 Где: Москва Репутация: 3 Всего: 12 |
покажите код, который у Вас в итоге получился.
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
|
|||
|
||||
| BlackLFL |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 15.9.2005 Где: Москва Репутация: 3 Всего: 12 |
не знаю что сказать, у меня данный код отрабатывает корректно
Perl 5.8.4 Spreadsheet::WriteExcel 2.15 Encode 2.12 |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
BlackLFL
А ты его локально из-под виндов запускал или с юникс-системы? Базу данных создавал/юзал? |
|||
|
||||
| BlackLFL |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 15.9.2005 Где: Москва Репутация: 3 Всего: 12 |
я проверял под WinXP, Linux.
Какая версия у тебя Mysql, DBD-Mysql,DBI ? |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
BlackLFL
Честно - не знаю. Я на хостинге у .masterhost (http://masterhost.ru/). Но вроде как у них там модули перловские обновляются постоянно, версии последние... Чесслово - не в кусре |
|||
|
||||
![]()
|
| Правила форума "Perl: CGI программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |