Portál AbcLinuxu, 12. srpna 2025 23:42


Dotaz: LDAP a podpora cestiny

21.2.2006 15:37 Martin
LDAP a podpora cestiny
Přečteno: 505×
Odpovědět | Admin
Dobry den vsem, resim problem jak nastavit LDAP server s podporou cestiny (pomoci UTF8). Myslim si, ze problem lze vyresit spravnym nakonfigurovanim schematu, ale nevim jak na to. Uz sem zkousel vsechny mozne datove typy, ale vysledek je vzdy stejny - vstup mi to sebere, ale vysledkem ldapsearch je spousta znaku u atributu a rozumny vysledek zadny. Pripadne rady prosim posilejte na kriecher@seznam.cz Predem dekuji za rady.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.2.2006 16:45 Netolish
Rozbalit Rozbalit vše Re: LDAP a podpora cestiny
Odpovědět | | Sbalit | Link | Blokovat | Admin
Výsledek ldapsearch je ve formátu LDIF RFC2849. Ten může obsahovat pouze ASCII znaky. Pokud atribut obsahuje i jiné znaky, je jeho hodnota vypsána v kódování BASE64 RFC 1521 odst. 5.2. Že je atribut vypsán v kódování BASE se pozná tak, že za názvem atributu následují dvě dvojtečky. Pro "rychlé" dekódování je možno použít např. echo base_64_retezec | openssl base64 -d. Jinak podobně jako např. v mailu platí zalamování na max 80zn/řádek. Aby se poznalo že další řádek je pokračováním předchozího, začíná tento řádek mezerou.
6.6.2006 12:14 Rada
Rozbalit Rozbalit vše Re: LDAP a podpora cestiny
Nevite nekdo kde by mohla byt chyba? Kdyz pouziju pro dekodovani jmena ve formatu ldif (v kodu BASE64) exportovaneho z AddressBooku Thunderbirdu nasledujici syntaxi prikazu:

echo base_64_retezec | openssl base64 -d

dekoduji se spravne jenom ASCI znaky. Misto ostatních se zobrazi nesmysly. např. jmeno Barnetová se zobrazí jako BarnetoĂĄ.
7.6.2006 13:47 Rada
Rozbalit Rozbalit vše Re: LDAP a podpora cestiny
Mozna jsem se spatne zeptal, mozna moje otazka neni srozumitelna mozna je odpoved tak stupidni, ze zkusenejsim nestoji za odpoved?. Znovu jsem googloval, dokonce jsem navstivil BEN abych si koupil nejakou knihu o LDAP, ale nikde jsem nenasel nic, co by mne navedlo na nejake reseni. Tusim, ze se bude jednat o nejakou pitomost. Vyse uvedeny prikaz: echo base_64_retezec | openssl base64 -d jsem pouzil pouze pro demonstraci , ale ceske znaky se spravne nedekoduji ani pokud pouziji perlovsky script ldif_to_vcard (pouzivajici lib. perl-ldap), ktery jsem nasel na webu. Zkousel jsem take: $ perl -MMIME::Base64 -ne 'print decode_base64($_)' < ./pokus-ldif.base64 pouze pro zakodovane jmeno "Barnetová", ale vysledek stejny, jak jsem uvedl v predchozim. Tohle musi byt nejaka blbost nesouvisejici se samotnou konverzi, mozna nejake spatne kodovani ??? Nevim. Diky za radu. Slibuju, ze pokud nikdo neodpovi, tak dalsi doterny dotaz uz psat nebudu :).
7.6.2006 16:31 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: LDAP a podpora cestiny
LDAP samotný kódování nijak neřeší – zapisuje prostě jen bajty. Tj. musíte data zapisovat ve stejném kódování, v jakém je pak čtete. Vy je zde evidentně zapisujete v UTF-8 a pak se je pokoušíte číst v iso-8859-2 nebo Windows-1250. Je třeba je v tomto kódování buď také zapisovat, nebo je číst v UTF-8.
7.6.2006 18:11 Rada
Rozbalit Rozbalit vše Re: LDAP a podpora cestiny
Myslel jsem, že i výstuní soubor zpracovaný jednoduchým scriptem ldif_to_vcard, bude uložen ve stejném kódování. V mém případě je vstupní soubor pokus.ldif v iso-8859-2, nicméně, jak jsem právě zjistil, výstupní soubor je kódován podle utf-8. To znamená, pakliže tomu správně rozumím, že výstupem jakéhokoliv dekódování podle base64 je soubor (výstup) kódovaný podle utf-8?. Díky za pomoc, tohle už nějak vyřeším.
7.6.2006 19:36 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: LDAP a podpora cestiny
Ne ne, výstupem dekódování podle base64 je výstup ve stejném kódování, v jakém jste data do LDAP uložil. Teoreticky to může být i pro každý atribut jinak…

Když ukládáte do LDAP text, převede se na posloupnost bytů, ta se pak zakóduje do base64. Při čtení zase z base64 dostanete posloupnost bytů, kterou si musíte převést na text. Převod při ukládání i čtení samozřejmě musí být podle jednoho kódování, o to se ale už musíte postarat vy. Tj. pokud se na to budete dívat tak, že do LDAP ukládáte sekvenci bytů a o konverzi z/na text se musíte postarat sám, nemůžete nic splést :-)

Pak je ještě potřeba dát si pozor na to, zda se kódování nemění ještě někde cestou (např. program načte data z LDAP, zjistí, že je to UTF-8 ale konzole že je v iso-8859-2 a překóduje je).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.