URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5680
[ Назад ]

Исходное сообщение
"Net::LDAP и русская кодировка"

Отправлено Anton , 01-Сен-06 09:52 
При добавлении новой записи, вида $dn = "cn=Иванов Иван Иванович,dc=example,dc=ru" получаю ошибку - invalid DN. Английские записи добавляются без проблем.

use Net::LDAP;

$result = $ldap->add( "$dn",
       attr => [
                 'objectclass' => ['top', 'person', 'organizationalPerson',   'inetOrgPerson', 'mozillaAbPersonObsolete' ],
                 'cn'   => "$cn",
                 'givenName'   => "$gn",
                 'mail' => "$login\@example.ru",
                 'o' => "$o",
                 'ou' => "$ou",
                 'sn' => "$sn"
               ]
);

Пробовал заворачивать записи через encode_utf8, затем encode_base64 и отдавать это $ldap->add. Результат аналогичен.

Спасибо.


Содержание

Сообщения в этом обсуждении
"Net::LDAP и русская кодировка"
Отправлено apr2504 , 02-Сен-06 11:49 
>При добавлении новой записи, вида $dn = "cn=Иванов Иван Иванович,dc=example,dc=ru" получаю ошибку

Надо попробовать каким-нибудь LDAP-клиентом, если сработает, то
проблема в перловских библиотеках. Сталкивался с подобной ситуацией, вылечилось
правкой файла схемы OpenLDAP'а. Какого не помню: давно дело было. Смысл в том, что
описание cn выражается через формат без поддержки юникода. Меняем описание и всё работает.


"Net::LDAP и русская кодировка"
Отправлено Anton , 04-Сен-06 09:41 
>>При добавлении новой записи, вида $dn = "cn=Иванов Иван Иванович,dc=example,dc=ru" получаю ошибку
>
>Надо попробовать каким-нибудь LDAP-клиентом, если сработает, то
>проблема в перловских библиотеках.

Утилита ldapadd via ldif файл добавляет записи без проблем. Но записи преобразованы через UTF8, а затем Base64, вида dn:: base64blabla. Так же не возникает проблем при работе phpldapadmin с каталогом.

>Сталкивался с подобной ситуацией, вылечилось
>правкой файла схемы OpenLDAP'а. Какого не помню: давно дело было. Смысл в
>том, что
>описание cn выражается через формат без поддержки юникода. Меняем описание и всё
>работает.

Я так понимаю, что любое не ISO-8859-1 представление должно отдаваться ldap-либам в UTF8 + Base64 обработке. В моем perl-коде, через Net::LDAP такое представление не работает.


"Net::LDAP и русская кодировка"
Отправлено mail , 07-Сен-06 11:45 
>При добавлении новой записи, вида $dn = "cn=Иванов Иван Иванович,dc=example,dc=ru" получаю ошибку
>- invalid DN. Английские записи добавляются без проблем.
>
>use Net::LDAP;
>
>$result = $ldap->add( "$dn",
>       attr => [
>                 'objectclass' => ['top', 'person', 'organizationalPerson',   'inetOrgPerson', 'mozillaAbPersonObsolete' ],
>                 'cn'   => "$cn",
>                 'givenName'   => "$gn",
>                 'mail' => "$login\@example.ru",
>                 'o' => "$o",
>                 'ou' => "$ou",
>                 'sn' => "$sn"
>            
>   ]
>);
>
>Пробовал заворачивать записи через encode_utf8, затем encode_base64 и отдавать это $ldap->add. Результат аналогичен.
>
>Спасибо.

я делаю таким же способом без проблем. используй use utf8.