Re: Special character Ç during search
Hi Anton, Thank you for your suggestion. I tried executing the same query using the Softerra LDAP browser (which uses the Netscape LDAP C libraries), and got no results either. Microsoft's ldp.exe also returns no results. Here is something more weirder. The query (cn=Ç*) returns no results, but the query (cn=Çm*) returns the desired results. The LDAP server I am using is an IBM Domino Notes server. I am going create a similar entry on ur AD server see if I get similar results. I will post my finding tomorrow. -Alexei Anton Bobrov wrote: > i'm not sure what exactly those macros do and if its a good idea > to implant them in there or not but i would start by checking yr > server logs, making sure correct entries in fact do exist, trying > to retrieve them using ldapsearch or alike. you can also try ICU > library which does pretty good job on converting from/to whatever > its cross platform and its open source as well [ IBM license ]. > > http://icu.sourceforge.net/ > http://icu.sourceforge.net/apiref/icu4c/index.html > > good luck! > > ialexei wrote: > > Platform : MS Windows XP, VC++.net 2003, ATL > > > > I am able to query all nodes in the LDAP tree except for the ones that > > begin with Ç. > > The CT2AEX<>(..,CP_UTF8) seem to be converting to UTF8 successfully, > > but the ldap_first_entry returns NULL. > > > > I also tried setting the option to use LDAP version 3.0, but that does > > not work either. Any ideas what is going on ? > > > > I modified the sample in the SDK search.c (enclosed below) with similar > > results. > > > > -Alexei > > > > #define MY_FILTER _T("(cn=Ç*)") > > > > int _tmain(int argc, _TCHAR* argv[]) > > { > > LDAP*ld; > > LDAPMessage *result, *e; > > BerElement *ber; > > char*a, *dn; > > char**vals; > > int i; > > > > /* get a handle to an LDAP connection */ > > if ( (ld = ldap_init( CT2AEX<>(MY_HOST, CP_UTF8), MY_PORT )) == NULL ) > > { > > perror( "ldap_init" ); > > return( 1 ); > > } > > /* authenticate to the directory as nobody */ > > if ( ldap_simple_bind_s( ld, NULL, NULL ) != LDAP_SUCCESS ) { > > ldap_perror( ld, "ldap_simple_bind_s" ); > > ldap_unbind( ld ); > > return( 1 ); > > } > > /* search for all entries with surname of Jensen */ > > if ( ldap_search_s( ld, CT2AEX<>(MY_SEARCHBASE, CP_UTF8), > > LDAP_SCOPE_SUBTREE, > > CT2AEX<>(MY_FILTER, CP_UTF8), NULL, 0, &result ) != > > LDAP_SUCCESS ) { > > ldap_perror( ld, "ldap_search_s" ); > > if ( result == NULL ) { > > ldap_unbind( ld ); > > return( 1 ); > > } > > } > > /* for each entry print out name + all attrs and values */ > > for ( e = ldap_first_entry( ld, result ); e != NULL; > > e = ldap_next_entry( ld, e ) ) { > > if ( (dn = ldap_get_dn( ld, e )) != NULL ) { > > printf( "dn: %s\n", dn ); > > ldap_memfree( dn ); > > } > > for ( a = ldap_first_attribute( ld, e, &ber ); > > a != NULL; a = ldap_next_attribute( ld, e, ber ) ) { > > if ((vals = ldap_get_values( ld, e, a)) != NULL ) { > > for ( i = 0; vals[i] != NULL; i++ ) { > > printf( "%s: %s\n", a, vals[i] ); > > } > > ldap_value_free( vals ); > > } > > ldap_memfree( a ); > > } > > if ( ber != NULL ) { > > ber_free( ber, 0 ); > > } > > printf( "\n" ); > > } > > ldap_msgfree( result ); > > ldap_unbind( ld ); > > > > > > return( 0 ); > > } > > > > ___ > > mozilla-directory mailing list > > mozilla-directory@mozilla.org > > http://mail.mozilla.org/listinfo/mozilla-directory ___ mozilla-directory mailing list mozilla-directory@mozilla.org http://mail.mozilla.org/listinfo/mozilla-directory
Re: Special character Ç during search
i'm not sure what exactly those macros do and if its a good idea to implant them in there or not but i would start by checking yr server logs, making sure correct entries in fact do exist, trying to retrieve them using ldapsearch or alike. you can also try ICU library which does pretty good job on converting from/to whatever its cross platform and its open source as well [ IBM license ]. http://icu.sourceforge.net/ http://icu.sourceforge.net/apiref/icu4c/index.html good luck! ialexei wrote: Platform : MS Windows XP, VC++.net 2003, ATL I am able to query all nodes in the LDAP tree except for the ones that begin with Ç. The CT2AEX<>(..,CP_UTF8) seem to be converting to UTF8 successfully, but the ldap_first_entry returns NULL. I also tried setting the option to use LDAP version 3.0, but that does not work either. Any ideas what is going on ? I modified the sample in the SDK search.c (enclosed below) with similar results. -Alexei #define MY_FILTER _T("(cn=Ç*)") int _tmain(int argc, _TCHAR* argv[]) { LDAP*ld; LDAPMessage *result, *e; BerElement *ber; char*a, *dn; char**vals; int i; /* get a handle to an LDAP connection */ if ( (ld = ldap_init( CT2AEX<>(MY_HOST, CP_UTF8), MY_PORT )) == NULL ) { perror( "ldap_init" ); return( 1 ); } /* authenticate to the directory as nobody */ if ( ldap_simple_bind_s( ld, NULL, NULL ) != LDAP_SUCCESS ) { ldap_perror( ld, "ldap_simple_bind_s" ); ldap_unbind( ld ); return( 1 ); } /* search for all entries with surname of Jensen */ if ( ldap_search_s( ld, CT2AEX<>(MY_SEARCHBASE, CP_UTF8), LDAP_SCOPE_SUBTREE, CT2AEX<>(MY_FILTER, CP_UTF8), NULL, 0, &result ) != LDAP_SUCCESS ) { ldap_perror( ld, "ldap_search_s" ); if ( result == NULL ) { ldap_unbind( ld ); return( 1 ); } } /* for each entry print out name + all attrs and values */ for ( e = ldap_first_entry( ld, result ); e != NULL; e = ldap_next_entry( ld, e ) ) { if ( (dn = ldap_get_dn( ld, e )) != NULL ) { printf( "dn: %s\n", dn ); ldap_memfree( dn ); } for ( a = ldap_first_attribute( ld, e, &ber ); a != NULL; a = ldap_next_attribute( ld, e, ber ) ) { if ((vals = ldap_get_values( ld, e, a)) != NULL ) { for ( i = 0; vals[i] != NULL; i++ ) { printf( "%s: %s\n", a, vals[i] ); } ldap_value_free( vals ); } ldap_memfree( a ); } if ( ber != NULL ) { ber_free( ber, 0 ); } printf( "\n" ); } ldap_msgfree( result ); ldap_unbind( ld ); return( 0 ); } ___ mozilla-directory mailing list mozilla-directory@mozilla.org http://mail.mozilla.org/listinfo/mozilla-directory ___ mozilla-directory mailing list mozilla-directory@mozilla.org http://mail.mozilla.org/listinfo/mozilla-directory
Special character Ç during search
Platform : MS Windows XP, VC++.net 2003, ATL I am able to query all nodes in the LDAP tree except for the ones that begin with Ç. The CT2AEX<>(..,CP_UTF8) seem to be converting to UTF8 successfully, but the ldap_first_entry returns NULL. I also tried setting the option to use LDAP version 3.0, but that does not work either. Any ideas what is going on ? I modified the sample in the SDK search.c (enclosed below) with similar results. -Alexei #define MY_FILTER _T("(cn=Ç*)") int _tmain(int argc, _TCHAR* argv[]) { LDAP*ld; LDAPMessage *result, *e; BerElement *ber; char*a, *dn; char**vals; int i; /* get a handle to an LDAP connection */ if ( (ld = ldap_init( CT2AEX<>(MY_HOST, CP_UTF8), MY_PORT )) == NULL ) { perror( "ldap_init" ); return( 1 ); } /* authenticate to the directory as nobody */ if ( ldap_simple_bind_s( ld, NULL, NULL ) != LDAP_SUCCESS ) { ldap_perror( ld, "ldap_simple_bind_s" ); ldap_unbind( ld ); return( 1 ); } /* search for all entries with surname of Jensen */ if ( ldap_search_s( ld, CT2AEX<>(MY_SEARCHBASE, CP_UTF8), LDAP_SCOPE_SUBTREE, CT2AEX<>(MY_FILTER, CP_UTF8), NULL, 0, &result ) != LDAP_SUCCESS ) { ldap_perror( ld, "ldap_search_s" ); if ( result == NULL ) { ldap_unbind( ld ); return( 1 ); } } /* for each entry print out name + all attrs and values */ for ( e = ldap_first_entry( ld, result ); e != NULL; e = ldap_next_entry( ld, e ) ) { if ( (dn = ldap_get_dn( ld, e )) != NULL ) { printf( "dn: %s\n", dn ); ldap_memfree( dn ); } for ( a = ldap_first_attribute( ld, e, &ber ); a != NULL; a = ldap_next_attribute( ld, e, ber ) ) { if ((vals = ldap_get_values( ld, e, a)) != NULL ) { for ( i = 0; vals[i] != NULL; i++ ) { printf( "%s: %s\n", a, vals[i] ); } ldap_value_free( vals ); } ldap_memfree( a ); } if ( ber != NULL ) { ber_free( ber, 0 ); } printf( "\n" ); } ldap_msgfree( result ); ldap_unbind( ld ); return( 0 ); } ___ mozilla-directory mailing list mozilla-directory@mozilla.org http://mail.mozilla.org/listinfo/mozilla-directory