Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP + AD] Krzaki w Active Directory
Forum PHP.pl > Forum > PHP
Domin
Witam,

Mam problem z zapisem polskich znaków do Active Directory. Zamiast polskich znaków w AD występują krzaki. Natomiast prawidłowo zapisane polskie znaki w AD, wyświetlane są prawidłowo na stronie.

Cała strona jest kodowana w UTF-8.

Do połączenia z katalogiem AD używam, klasy adLDAP dostępnej poniżej.

  1. http://adldap.sourceforge.net/


Czy wie ktoś jak rozwiązać problem? Z góry dzięki za pomoc.

Pozdrawiam,
Domin
erix
O ile mnie pamięć nie myli, to kodowanie w Windows było zawsze CP1250. [;
Domin
Ja to wiem, ale nie będę przestawiał kodowania całej strony, żeby dział mi zapis do AD, logiczniej jest chyba konwertować zapisywany tekst, ale kiedy? Przed samym zapisem?
erix
No, przecież nie będę Ci mówił, żeby całą stronę dostosować tongue.gif

Tylko teksty lecące do LDAP.
Domin
Ostatnio byłem trochę zapracowany i nie miałem czasu, aby sprawdzić rozwiązanie.... ale temat w tym momencie jest aktualny i dość pilny :-(

Niestety konwertowanie danych przed zapisaniem nie pomaga. Być może coś pominąłem, ale nie wydaje mi się... Strona jest kodowana w całości w UTF-8. Dane pobierane z AD wyświetlają się zawsze prawidłowo (oczywiście bez żadnej konwersji).

Próbowałem następujących funkcji...
utf8_decode
utf8_encode
iconv (tutaj próbowałem różnych kombinacji: UTF8, CP1250, ISO-8859-2 i nic...)

Czyli jak krzaki były zapisywane tak są, w zależności od kombinacji krzaki różnie wyglądały w AD (zrozumiałe).

Zauważyłem, że w AD typ pola jest Unicode String ale nie wiem co dalej, gdyż nie mam pomysłów...

Czy komuś przychodzi coś do głowy?

Czy ktoś wie jak rozwiązać ten problem?
phpion
Cytat(Domin @ 4.11.2009, 00:45:48 ) *
iconv (tutaj próbowałem różnych kombinacji: UTF8, CP1250, ISO-8859-2 i nic...)

Nie wiem czy błąd wkradł się podczas pisania posta, ale na wszelki wypadek napiszę (może pomoże): nie CP1250 tylko Windows-1250.

PS: no i nie UTF8 tylko UTF-8.
Domin
Windows-1250 również próbowałem...

Oczywiście UTF-8 (literówka)

Czy nikt nie ma pomysłów?
mariusz g
Ja mam problem z wysyłaniem zapytania z php do ldap np:
  1. $sr=ldap_search($ldapconn, ... ....itd , "cn=".$_POST['nazwa']."");

jeśli w "nazwa" mam polski znak to nie wyszuka
jeśli dam bez polskiego znaku to znajdzie i wszystko co zwróci nie zawiera polskich znaków

macie jakiś pomysł na te polskie znaki ?

pozdrawiam
erix
A przeczytałeś cały ten wątek?
ssylwester
Ja rozwiązałem ten problem. Choć siedziałem nad tym dosyć sporo analizując dokumentację adLdap i kod klasy. Rozwiązałem to poprzez zakomentowanie linijki:
  1. array_walk($attributes, array($this, 'encode8bit'));

w funkcji
  1. protected function adldap_schema($attributes)

i jak na razie działa bez zarzutu na EN i PL wersji Windows 2003.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.