Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - green_forest

Страницы: [1] 2
1
Проблему решил.
При обнаружении вышеизложеной проблемы, надо смотреть на корректность установки переменной LC_COLLATE

use locale;
use POSIX qw (locale_h);
setlocale(LC_CTYPE, \'ru_RU.KOI8-R\');
setlocale(LC_COLLATE, \'ru_RU.KOI8-R\');
# Теперь сортировка строк проходит корректно

Спасибо ondr и всем за помощь!

2
Да, кодировка одна и там и там.
Веб-сервер apache2, mod_perl (пробовал вер.1.99 и 2)

Это хеш ссылок на хеши, деревовидная структура.

# Корень дерева
my $tree = {};

# Запоминаем корень
my $my_root = $tree;
...
Создаем дерево
...
Выводим дерево


Елементы заполняются следующим образом:

$tree->{Отдел Продаж} = {};
$tree = $tree->{Отдел Продаж};

$tree->{Пупкин Вася} = {};
$tree = $tree->{Пупкин Вася};

# можна наверное $tree = $tree->{Пупкин Вася} = {};

Сортировка проходит по-ключам.

При выводе в web сортировка не срабатывает.
Вывод setlocale(LC_CTYPE) корректно работает и там и там.

Может дополнительно сказать что-то в конфиге apache?

3
да нет, все ок.
Выводит локаль консоли -  ru_RU.KOI8-R ...

4
Помогите, плз! Сортировка хеша. Разные результаты в консоли и в web...

Куски и скрипта:

use strict;
use locale;
use POSIX qw (locale_h);
setlocale(LC_CTYPE, \'ru_RU.KOI8-R\');

sub view_tree {
   my ($root) = @_;
   foreach my $attr (sort keys %$root) {
      if (ref($root->{$attr}) ne \'HASH\') {
          print "$attr: $root->{$attr}\\n";
      } else {
          view_tree($root->{$attr});
      }
   }
}

# Создаем дерево
....

# Выводим дерево
&view_tree($my_root);

Локаль KOI8-R.
В консоли все супер.
Но в выводе в web хаотичный вывод. Как бы дерево, но без сортировки.
Почему выводы отличаются? Где копать?

Спасибо огромное заранее!

6
Perl / модуль Mail::Sender. Помогите плз
« : 23 Марта 2005, 18:42:50 »
Спасибо за помощь.

Придется все в 1251 наладить.

7
Perl / модуль Mail::Sender. Помогите плз
« : 23 Марта 2005, 18:39:40 »
Приходят с названием в KOI8-U без перекодировки.
И Виндовс-клиент не может прочитать название файла.

А когда кодирую имя файла из KOI8-U -> CP1251, Виндовс-клиент все прекрасно читает.
Хоть само письмо в КОИ8
Так и должно быть?

8
Perl / модуль Mail::Sender. Помогите плз
« : 23 Марта 2005, 17:20:38 »
Нет, $xls_file=\'Имя с пробелами в кодировке KOI8-U.xls\' без пути...

9
Perl / модуль Mail::Sender. Помогите плз
« : 23 Марта 2005, 17:14:20 »
спасибо за ответы.

Мысль есть. $xls_file содержит полный путь к файлу-вложению.
Может в строке disposition => \'attachment; filename="\'.$xls_file.\'"\'
указывать только название файла? Скорее всего так...

10
Perl / модуль Mail::Sender. Помогите плз
« : 23 Марта 2005, 14:36:08 »
Сори, вырвалось.

В этой строчке указывается filename:
disposition => \'attachment; filename="\'.$xls_file.\'"\',

Пробовал filename=*

То же самое.

11
Perl / модуль Mail::Sender. Помогите плз
« : 23 Марта 2005, 13:55:47 »
Пытаюсь сделать рассылку письма с вложением с линукс машины.
Все как-бы нормально, Виндовс-клиенты корректно видят письмо, тему. Но вложение приходит с именем крякозябриками.
Это нормально? Мне для рассылки для Видовс-машин надо перекодировать название вложения? Как-то это через... получается.

if ($mail) {
if ($email) {
print "$xls_file на $email... ";
my $sender = new Mail::Sender {
smtp => \'smtp.mail.server\',
from => \'sender@mail.server\',
replyto => \'sender@mail.server\',
on_errors => \'code\',
charset => \'KOI8-U\',
};

die "Mail::Sender: $Mail::Sender::Error" unless ref $sender;

ref $sender->OpenMultipart({
to => $email,
subject => "Вложение",
charset => \'KOI8-U\',
encoding => \'quoted-printable\',
})
or die "$sender->{\'error_msg\'}";

$sender->Body(\'KOI8-U\', \'quoted-printable\', \'text/plain\');

$sender->SendEnc(<Текст письма
EOS
$sender->SendFile({
description => "Microsoft Excel file $xls_file",
ctype => \'application/vnd.ms-excel\',
encoding => \'Base64\',
disposition => \'attachment; filename="\'.$xls_file.\'"\',
file => $xls_file
});

$sender->Close
or die "$sender->{\'error_msg\'}";

print "OK\\n";
}

12
Perl / Помогите с Spreadsheet::Writeexcel плиз
« : 29 Октября 2004, 15:37:33 »
Спасибо, ребята, что натолкнули меня на правильное решение!

$worksheet->write_unicode(\'A1\', $map->to_unicode(koitowin("Пользователь")));

koitowin - koi8->cp1251
Нашел только карту к CP1251, посему двойная перекодировка.

13
Perl / Помогите с Spreadsheet::Writeexcel плиз
« : 29 Октября 2004, 15:07:48 »
Workbook.pm
...
        print {$self->{_filehandle}} $data;
...

14
Perl / Помогите с Spreadsheet::Writeexcel плиз
« : 29 Октября 2004, 14:41:02 »
Сори, объясните, а то туплю...
--Делаю
use encoding "koi8-u";

my $workbook = Spreadsheet::WriteExcel->new("test.xls");
my $worksheet = $workbook->add_worksheet("My list");
$worksheet->write(\'A1\', "Пользователь");

$workbook->close;

--В ответ
Wide character in print at /usr/lib/perl5/vendor_perl/5.8.4/Spreadsheet/WriteExcel/Workbook.pm line 205.

15
Perl / Помогите с Spreadsheet::Writeexcel плиз
« : 29 Октября 2004, 11:17:08 »
Спасибо за ответ.

Из доки:
...
unicode_cp1251.pl       Russian:  CP1251      to utf8 in perl 5.8.
...

Как я понял, пример про преобразование CP1251->UTF8
Или нет?

А по-другому никак? Только преобразовав строку в UTF8?
У меня пока нет полной поддержки UTF8.

Страницы: [1] 2