![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| ADm |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 19.6.2006 Где: Россия Репутация: нет Всего: нет |
Всем Привет!
Столкнулся со странной проблемой, есть приложение написанное на CGI::Application+TT (Template Toolkit) которое работает с LDAP-сервером. (в LDAP данные хранятся в UTF8). вывожу страницу с данными полученными из LDAP, страница тоже выводится в UTF8 (те данные из лдап выводятся без перекодировки). И происходит такое: часть данных полученных из LDAP+текст из шаблона (UTF8) выводится крякозябрами (каша из различных символов), но часть данных выводится нормально. кодировка текста в программе явно не меняется (везде работаем только с UTF8) данные в шаблон передаются так:
то есть, данные засовываются в $response порциями, и именно одна из порций выводится на странице нормально... кроме того, если выводить английские символы то страница выводится нормально (при том, что в тексте шаблона присутствуют русские буквы. такое ощущение что текст несколько раз кодируется.... Если кто знает или догадывается в чем дело подскажите, направьте на путь истинный PS: подобный баг присутствует на машине под Debian 4 (перевели на testing, библиотеки обновились, но ничего не изменилось) врсия perl v5.8.8, все модули и либы из пакетов дистриба на другой машине: под slackware current все работает нормально (версии модулей perl совпадают, версия perl такая же но скомпилина с другими опциями (из дистриба)), перловые модули качал с сипана и ставил руками. |
|||
|
||||
| ADm |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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. После всех вышеописанных операций страница отображается нормально. Осталось только неясно, почему под Slackware все отображалось как надо и без подобных модификаций а под Debian'ом нет... |
|||
|
||||
![]()
|
| Правила форума "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. |