Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HELP: испорченый текст на страницы (UTF8) 
V
    Опции темы
ADm
  Дата 22.6.2007, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 19.6.2006
Где: Россия

Репутация: нет
Всего: нет



Всем Привет!

   Столкнулся со странной проблемой, 
   есть приложение написанное на CGI::Application+TT (Template Toolkit) которое работает с LDAP-сервером. (в LDAP данные хранятся в UTF8). вывожу страницу с данными полученными из LDAP, страница тоже выводится в UTF8 (те данные из лдап выводятся без перекодировки). 
   И происходит такое: часть данных полученных из LDAP+текст из шаблона (UTF8) выводится крякозябрами (каша из различных символов), но часть данных выводится нормально. кодировка текста в программе явно не меняется (везде работаем только с UTF8)

данные в шаблон передаются так:

Код


sub runmode{

#получаем данные из LDAP...

#в теле метода я заполняю данными переменную $response (это ссылка на хэш):
$response->{text1}=$data1;#текст в utf8
$response->{text2}=$data2;#текст в utf8
...итд

#строчка в конце метода-runmod'а
return $self->tt_process($page_tmpl_name,{pagedata=>$response});
}



то есть, данные засовываются в $response порциями, и именно одна из порций выводится на странице нормально...
кроме того, если выводить английские символы то страница выводится нормально (при том, что в тексте шаблона присутствуют русские буквы. такое ощущение что текст несколько раз кодируется....

   Если кто знает или догадывается в чем дело подскажите, направьте на путь истинный  smile 



PS: подобный баг присутствует на машине под Debian 4 (перевели на testing, библиотеки обновились, но ничего не изменилось)
врсия perl v5.8.8, все модули и либы из пакетов дистриба

на другой машине: под slackware current все работает нормально (версии модулей perl совпадают, версия perl такая же но скомпилина с другими опциями (из дистриба)), перловые модули качал с сипана и ставил руками.

PM MAIL ICQ Jabber   Вверх
ADm
  Дата 23.6.2007, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 19.6.2006
Где: Россия

Репутация: нет
Всего: нет



Разобрался таки в чем дело. пишу тут, может кому-то будет интересно

итак по порядку.

фактически, в TT-шаблоне использовалось три "типа" utf8: первый тип - utf8 которым написан сам шаблон (в редакторе), тип 2 - это utf8 загруженый из XML-файла (Data::Dumper выводил этот текст в виде: \x{421}\x{a4f} итд, те нормальный (в перловом смысле) юникод, который кстати и выводился нормально), про него я кстати забыл написать((, тип 3 - это utf8 загруженный из LDAP и представленый в памяти в виде: \xd0\x9e\xd1\x82 - те набор байтов (как юникод перлом не распозновался).

оказалось, чтобы TT нормально обработал шаблон, надо записать в начало шаблона BOM-заголовок (для UTF8 это EF BB BF), после этого текст шабона стал выводится нормально. Осталась мелочь - перекодировать байты (тип3) в юникод, сделал это с помощью utf8::decode.

После всех вышеописанных операций страница отображается нормально.  smile 

Осталось только неясно, почему под Slackware все отображалось как надо и без подобных модификаций а под Debian'ом нет... smile 

PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0378 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.