LDAP-CODEPAGE
Verwenden Sie die LDAP_CODEPAGE -API, um Zeichenfolgekonvertierungen zu verwalten. Es dient zur Verwaltung der Konvertierung von Zeichenfolgen zwischen UTF-8 und einer lokalen Codepage.
- ldap_xlate_local_to_utf8
- ldap_xlate_utf8_to_local
- ldap_xlate_local_to_unicode
- ldap_xlate_unicode_to_local
- ldap_set_locale
- ldap_get_locale
- ldap_set_iconv_local_codepage
- ldap_get_iconv_local_codepage
- ldap_set_iconv_local_charset
- ldap_char_size
Übersicht
#include ldap.h
int ldap_xlate_local_to_utf8(
char *inbufp,
unsigned long *inlenp,
char *outbufp,
unsigned long *outlenp);
int ldap_xlate_utf8_to_local(
char *inbufp,
unsigned long *inlenp,
char *outbufp,
unsigned long *outlenp);
int ldap_xlate_local_to_unicode(
char *inbufp,
unsigned long *inlenp,
char *outbufp,
unsigned long *outlenp);
int ldap_xlate_unicode_to_local(
char *inbufp,
unsigned long *inlenp,
char *outbufp,
unsigned long *outlenp);
int ldap_set_locale(
const char *locale);
char *ldap_get_locale( )
int ldap_set_iconv_local_codepage
char *codepage);
char *ldap_get_iconv_local_codepage( );
int ldap_set_iconv_local_charset(
char *charset);
int ldap_char_size(
char *p);
Eingabeparameter
- Inbufp
- Ein Zeiger auf die Adresse des Eingabepuffers, der die zu übersetzenden Daten enthält.
- Inlenp
- Länge des
inbufp-Eingabepuffers in Byte. - Outbufp
- Ein Zeiger auf die Adresse des Ausgabepuffers für umgesetzte Daten.
- Outlenp
- Länge des
outbufp-Eingabepuffers in Byte.Anmerkung: Der Ausgabepuffer muss dreimal so groß wie der Eingabepuffer sein, wenn Sie den gesamten Eingabepuffer in einem einzigen Aufruf umsetzen. - charset
- Gibt den Zeichensatz an, der verwendet werden soll, wenn Zeichenfolgen zwischen UTF-8 und der lokalen Codepage konvertiert werden. Informationen zu den spezifischen
charset-Werten, die für die einzelnen Betriebssystemplattformen unterstützt werden, finden Sie unter Von der Plattform unterstützte IANA-Zeichensätze .Hinweis: Die unterstützten Werte fürcharsetsind dieselben Werte, die für den Tagcharsetunterstützt werden, der optional in LDIF-Dateien der Version 1 definiert ist. - Codepage
- Gibt eine Codepage oder einen codierten Zeichensatz zum Überschreiben der aktiven Codepage für die derzeit definierte Ländereinstellung an. Informationen zu den Codepages, die für ein bestimmtes Betriebssystem unterstützt werden, finden Sie in der Systemdokumentation.
- Ländereinstellung
- Gibt die Ländereinstellung an, die von LDAP bei der Konvertierung in und aus UTF-8 oder Unicode verwendet werden soll. Wenn die Ländereinstellung nicht explizit festgelegt ist, verwendet die LDAP-Bibliothek die Standardländereinstellung der Anwendung. Damit die LDAP-Bibliothek eine andere Ländereinstellung verwendet, geben Sie die entsprechende Zeichenfolge für die Ländereinstellung an.Für Anwendungen, die auf der Windows-Plattform ausgeführt werden, sind unterstützte Ländereinstellungen in ldaplocale.hdefiniert. Der folgende Code ist beispielsweise ein Auszug aus ldaplocale.h und zeigt die verfügbaren französischen Ländereinstellungen:
/* French - France */ #define LDAP_LOCALE_FRFR850 "Fr_FR" #define LDAP_LOCALE_FRFRISO8859_1 "fr_FR"Für Anwendungen, die unter dem Betriebssystem AIX® ausgeführt werden, lesen Sie die Ländereinstellungsdefinitionen, die im Abschnitt
Understanding Locale
des Handbuchs AIX System Management Guide: Operating System and Devicesdefiniert sind. Systemdefinierte Ländereinstellungen befinden sich in /usr/lib/nls/loc auf dem Betriebssystem AIX .Fr_FRundfr_FRsind beispielsweise zwei vom System unterstützte französische Ländereinstellungen.Informationen zu Solaris-Anwendungen finden Sie in der Systemdokumentation zu den vom System unterstützten Ländereinstellungsdefinitionen.
Anmerkung: Die angegebene Ländereinstellung gilt für alle Konvertierungen durch die LDAP-Bibliothek im Anwendungsadressraum. Die LDAP-Ländereinstellung wird nur festgelegt oder geändert, wenn keine andere LDAP-Aktivität in der Anwendung in anderen Threads auftritt. - p
- Gibt die Anzahl der Byte zurück, die das Zeichen bilden, auf das durchpBei ASCII-Zeichen ist dies 1. Für andere Zeichensätze kann er größer als 1 sein.
Ausgabeparameter
- Inbufp
- Ein Zeiger auf die Adresse des Eingabepuffers, der die zu übersetzenden Daten enthält.
- Inlenp
- Länge des
inbufp-Eingabepuffers in Byte - Outbufp
- Ein Zeiger auf die Adresse des Ausgabepuffers für umgesetzte Daten.
- Outlenp
- Länge des
outbufp-Eingabepuffers in ByteAnmerkung: Der Ausgabepuffer muss dreimal so groß wie der Eingabepuffer sein, wenn Sie den gesamten Eingabepuffer in einem einzigen Aufruf umsetzen. - Ländereinstellung
- Wenn die ldap_get_locale() -API zurückgegeben wird, gibt die Ländereinstellung die momentan aktive Ländereinstellung für LDAP an. Informationen zu den Ländereinstellungen, die für ein bestimmtes Betriebssystem unterstützt werden, finden Sie in der Systemdokumentation. Informationen zu Anwendungen, die in der Windows-Umgebung ausgeführt werden, finden Sie unter ldaplocale.h.
- Codepage
- Bei Rückgabe von der ldap_get_iconv_local_codepage() -API gibt die Codepage die momentan aktive Codepage an, die der momentan aktiven Ländereinstellung zugeordnet ist. Informationen zu den Codepages, die für ein bestimmtes Betriebssystem unterstützt werden, finden Sie in der Systemdokumentation.
Verwendung
Diese Routinen werden verwendet, um die Konvertierung von Daten zwischen der lokalen Codepage und UTF-8auf Anwendungsebene zu verwalten. Er wird von LDAP bei der Kommunikation mit einem mit LDAP V3 kompatiblen Server verwendet.
ld als Eingabe akzeptieren, dass Zeichenfolgedaten als Eingabe in der lokalen Codepage bereitgestellt werden. Sie geben Zeichenfolgedaten in der lokalen Codepage an die Anwendung zurück. Mit anderen Worten, die folgenden LDAP-Routinen und zugehörigen APIs konvertieren Zeichenfolgedaten automatisch in das und aus dem UTF-8 -Verbindungsprotokoll:- ldap_add (und Familie)
- ldap_bind (und Familie)
- ldap_compare (und Familie)
- ldap_delete (und Familie)
- ldap_parse_reference
- ldap_get_dn
- ldap_get_values
- ldap_modify (und Familie)
- ldap_parse_result
- ldap_rename (und Familie)
- ldap_search (und Familie)
- ldap_url_search (und Familie)
- ldap_explode_dn
- ldap_explode_dns
- ldap_explode_rdn
- ldap_server_locate
- ldap_server_conf_save
- ldap_is_ldap_url
- ldap_url_parse
- ldap_default_dn_set
- Die Anwendung verwendet eine oder mehrere der nicht verbindungsorientierten APIs. Sie müssen Zeichenfolgen aus der lokalen Codepage in UTF-8 konvertieren, bevor Sie die APIs verwenden können.
- Die Anwendung ist zum Senden und Empfangen von Zeichenfolgen als UTF-8 konzipiert, wenn sie die LDAP-APIs verwendet. Es ist jedoch erforderlich, ausgewählte Zeichenfolgen in die lokale Codepage zu konvertieren, bevor Sie dem Benutzer präsentieren. Wenn das Verzeichnis heterogene Daten enthält, d. h., Daten aus mehreren Ländern oder Ländereinstellungen abgerufen werden, kann dies der erforderliche Ansatz sein.
Diese Routinen werden verwendet, um die Konvertierung von Daten zwischen der lokalen Codepage und UTF-8auf Anwendungsebene zu verwalten. Er wird von LDAP bei der Kommunikation mit einem mit LDAP V3 kompatiblen Server verwendet. Weitere Informationen zum Standard UTF-8 erhalten Sie, wenn Sie nach "UTF-8, einem Transformationsformat von ISO 10646, suchen.
ldap_set_option() verwendet, um die Option LDAP_OPT_UTF8_IO auf LDAP_UTF8_XLATE_ONzu setzen. Wenn festgelegt, erwarten die folgenden verbindungsbasierten APIs, die eine ld als Eingabe akzeptieren, dass Zeichenfolgedaten als Eingabe in der lokalen Codepage bereitgestellt werden. Sie geben Zeichenfolgedaten in der lokalen Codepage an die Anwendung zurück. Mit anderen Worten, die folgenden LDAP-Routinen und zugehörigen APIs konvertieren Zeichenfolgedaten automatisch in das und aus dem UTF-8 -Verbindungsprotokoll:- ldap_add (und Familie)
- ldap_bind (und Familie)
- ldap_compare (und Familie)
- ldap_delete (und Familie)
- ldap_parse_reference
- ldap_get_dn
- ldap_get_values
- ldap_modify (und Familie)
- ldap_parse_result
- ldap_rename (und Familie)
- ldap_search (und Familie)
- ldap_url_search (und Familie)
- ldap_explode_dn
- ldap_explode_dns
- ldap_explode_rdn
- ldap_server_locate
- ldap_server_conf_save
- ldap_is_ldap_url
- ldap_url_parse
- ldap_default_dn_set
- Die Anwendung verwendet eine oder mehrere der nicht verbindungsorientierten APIs. Es erfordert die Konvertierung von Zeichenfolgen aus der lokalen Codepage in UTF-8 , bevor die APIs verwendet werden.
- Die Anwendung soll Zeichenfolgen als UTF-8 senden und empfangen, wenn Sie die LDAP-APIs verwenden. Ausgewählte Zeichenfolgen müssen jedoch in die lokale Codepage konvertiert werden, bevor sie dem Benutzer angezeigt werden. Wenn das Verzeichnis heterogene Daten enthält, d. h., Daten aus mehreren Ländern oder Ländereinstellungen abgerufen werden, kann dies der erforderliche Ansatz sein.
- Ziehen Sie in Betracht, Ihre Anwendung in eine Präsentationskomponente und eine LDAP-Workerkomponente aufzuteilen.
- Die Präsentationskomponente dient zum Abrufen von Daten aus externen Quellen. Zum Beispiel grafische Benutzerschnittstellen (GUIs), Befehlszeilen, Dateien und Anzeigen der Daten in einer GUI, Standardausgabe, Dateien. Diese Komponente verarbeitet normalerweise Zeichenfolgedaten, die in der lokalen Codepage dargestellt werden.
- Die LDAP-Workerkomponente ist für die direkte Interaktion mit den LDAP-Programmierschnittstellen zuständig. Die LDAP-Workerkomponente kann implementiert werden, um streng in UTF-8 zu handeln, wenn Sie Zeichenfolgedaten verarbeiten. Der Standardbetriebsmodus für die LDAP-Bibliothek ist die Verarbeitung von Zeichenfolgen, die als UTF-8codiert sind.
- Die Zeichenfolgekonvertierung zwischen UTF-8 und der lokalen Codepage erfolgt, wenn Daten an die und von der Darstellungskomponente und der LDAP-Workerkomponente übergeben werden.
Die LDAP-Workerkomponente gibt eine LDAP-Suche aus und gibt eine Liste der Einträge aus dem Verzeichnis zurück. Um sicherzustellen, dass keine Daten verloren gehen, wird der Standardmodus verwendet und die LDAP-Bibliothek konvertiert keine Zeichenfolgedaten. In diesem Fall bedeutet dies, dass die DNs der Einträge, die von der Suche zurückgegeben werden, in UTF-8dargestellt werden.
Die Anwendung möchte diese Liste der DNs in einer Anzeige anzeigen. Diese Anzeige kann dem Benutzer helfen, den erforderlichen Eintrag auszuwählen, und die Anwendung ruft dann weitere Attribute für den ausgewählten DN ab. Da der DN in UTF-8dargestellt wird, muss er vor der Anzeige in die lokale Codepage konvertiert werden.
Der konvertierte DN ist möglicherweise keine treue Darstellung des UTF-8 -DN. Wenn der DN beispielsweise in China erstellt wurde, kann er chinesische Zeichen enthalten. Wenn die Anwendung in einer französischen Ländereinstellung ausgeführt wird, werden bestimmte chinesische Zeichen möglicherweise nicht korrekt konvertiert und durch ein Ersatzzeichen ersetzt.
Die Anwendung kann den konvertierten DN anzeigen, aber bestimmte Zeichen werden möglicherweise als bobs angezeigt. Wenn dem Benutzer genügend Informationen zur Auswahl des gewünschten DN zur Verfügung stehen, greift die Anwendung auf das LDAP-Verzeichnis mit dem ausgewählten DN zu, um weitere Informationen zu erhalten. Beispiel: Ein
JPEG
-Bild, damit es das Benutzerfoto anzeigen kann. DaJPEG
-Bilder möglicherweise groß sind, ist die Anwendung so konzipiert, dass sie das JPEG-Attribut erhält, nachdem der Benutzer nur den bestimmten DN ausgewählt hat.Stellen Sie sicher, dass bei der Suche das Attribut
JPEG
abgerufen wird, indem Sie den ausgewählten DN für die Arbeit verwenden. Die Suche muss mit der ursprünglichen UTF-8 -Version des ausgewählten DN erfolgen. Die Suche darf nicht mit der Version des DN durchgeführt werden, die in die lokale Codepage konvertiert wurde. Diese Aktion impliziert, dass die Anwendung eine Korrelation zwischen der ursprünglichen DN UTF-8 -Version und der Version, die in die lokale Codepage konvertiert wurde, aufrechterhält. - Wenn die Anwendung Benutzereingaben akzeptiert, generieren Sie eine oder mehrere LDAP-Suchen und zeigen Sie dann die Informationen an, ohne die Ergebnisse zurück an die LDAP-Bibliothek zu übergeben. Die Anwendung kann so konzipiert werden, dass die LDAP-Bibliothek die Konvertierungen ausführen kann, auch wenn theoretisch einige Datenverluste auftreten können. Die automatische Konvertierung von Zeichenfolgedaten für einen bestimmten
ldkann aktiviert werden, indem ldap_set_option () mit der Option LDAP_OPT_UTF8_IO auf LDAP_UTF8_XLATE_ONgesetzt wird.
ldap_char_size gibt die Anzahl der Byte zurück, die das Zeichen bilden, auf das durch p verwiesen wird. Bei ASCII-Zeichen ist der Wert 1. Für andere Zeichensätze kann er größer als 1 sein.
- Lokale Codepage in UTF-8 umsetzen
Die API ldap_xlate_local_to_utf8() wird verwendet, um eine Zeichenfolge aus der lokalen Codepage in eine UTF-8 -Codierung zu konvertieren. Die Ausgabezeichenfolge des Konvertierungsprozesses kann größer als die Eingabezeichenfolge sein. Daher muss der Ausgabepuffer mindestens doppelt so groß sein wie der Eingabepuffer.LDAP_SUCCESSwird zurückgegeben, wenn die Konvertierung erfolgreich ist.
- UTF-8 in lokale Codepage umsetzen
- Die API ldap_xlate_utf8_to_local() wird verwendet, um eine UTF-8 -codierte Zeichenfolge in die lokale Codepagecodierung zu konvertieren. Die Ausgabezeichenfolge des Konvertierungsprozesses kann größer als die Eingabezeichenfolge sein. Daher muss der Ausgabepuffer mindestens doppelt so groß sein wie der Eingabepuffer.
LDAP_SUCCESSwird zurückgegeben, wenn die Konvertierung erfolgreich ist.Anmerkung: Die Umsetzung von Zeichenfolgen aus einer UTF-8 -Codierung in eine lokale Codepage kann zu Datenverlust führen. Dieser Verlust ist möglich, wenn mindestens ein Zeichen in der Codierung UTF-8 nicht in der lokalen Codepage dargestellt werden kann. Bei dieser Umsetzung ersetzt ein Substitutionszeichen alle UTF-8 Zeichen, die nicht in die lokale Codepage konvertiert werden können.
- Lokale Codepage in Unicode umsetzen
Die API ldap_xlate_local_to_unicode() wird verwendet, um eine Zeichenfolge aus der lokalen Codepage in die UCS-2 -Codierung zu konvertieren, wie in
ISO/IEC10646-1 definiert. Dieselbe Gruppe von Zeichen wird auch im UNICODE-Standard definiert. Die Ausgabezeichenfolge des Konvertierungsprozesses kann größer als die Eingabezeichenfolge sein. Daher muss der Ausgabepuffer mindestens doppelt so groß sein wie der Eingabepuffer.LDAP_SUCCESSwird zurückgegeben, wenn die Konvertierung erfolgreich ist.
- Unicode in lokale Codepage umsetzen
- Die ldap_xlate_unicode_to_local() -API wird verwendet, um eine UCS-2-encoded Zeichenfolge in die lokale Codepagecodierung zu konvertieren. Die Ausgabezeichenfolge des Konvertierungsprozesses kann größer als die Eingabezeichenfolge sein. Daher muss der Ausgabepuffer mindestens doppelt so groß sein wie der Eingabepuffer.
LDAP_SUCCESSwird zurückgegeben, wenn die Konvertierung erfolgreich ist.Anmerkung: Die Umsetzung von Zeichenfolgen aus einer UCS-2 -Codierung (UNICODE) in eine lokale Codepage kann zu Datenverlust führen. Dieser Verlust ist möglich, wenn mindestens ein Zeichen in der Codierung UCS-2 nicht in der lokalen Codepage dargestellt werden kann. Bei dieser Umsetzung ersetzt ein Substitutionszeichen alle UCS-2 Zeichen, die nicht in die lokale Codepage konvertiert werden können.
- Ländereinstellung festlegen
Mit der API ldap_set_locale() wird die Ländereinstellung geändert, die von LDAP für Konvertierungen zwischen der lokalen Codepage und UTF-8 (oder Unicode) verwendet wird. Sofern nicht explizit mit der API ldap_set_locale() festgelegt, verwendet LDAP die Standardländereinstellung der Anwendung. Damit die LDAP-Bibliothek eine andere Ländereinstellung verwendet, geben Sie die entsprechende Zeichenfolge für die Ländereinstellung an. Für UNIX-Systeme finden Sie die Ländereinstellungsdefinitionen in der Systemdokumentation. Informationen zu Windows-Betriebssystemen finden Sie unter ldaplocale.h.
- Ländereinstellung abrufen
Die API ldap_get_locale() wird verwendet, um die aktive LDAP-Ländereinstellung abzurufen. Werte, die zurückgegeben werden können, sind systemspezifisch.
- Codepage festlegen
Die API ldap_set_iconv_local_codepage() wird verwendet, um die Codepage zu überschreiben, die der aktiven Ländereinstellung zugeordnet ist. Informationen zu den Codepages, die für ein bestimmtes Betriebssystem unterstützt werden, finden Sie in der Systemdokumentation.
- Codepage abrufen
Mit der API ldap_get_iconv_local_codepage() wird die Codepage abgerufen, die der aktiven Ländereinstellung zugeordnet ist. Informationen zu den Codepages, die für ein bestimmtes Betriebssystem unterstützt werden, finden Sie in der Systemdokumentation. Informationen zu den spezifischen
charset-Werten, die für die einzelnen Betriebssystemplattformen unterstützt werden, finden Sie unter Von der Plattform unterstützte IANA-Zeichensätze . Die unterstützten Werte fürcharsetsind dieselben Werte, die für den Tagcharsetunterstützt werden, der optional in LDIF-Dateien der Version 1 definiert ist.
- Japanische und koreanische Währungsaspekte
- Die allgemein akzeptierte Konvention für die Konvertierung des Backslash-Zeichens
(\)(EinzelbyteX'5C') aus der japanischen oder koreanischen Ländereinstellung in Unicode besteht darin, das ZeichenX'5C'in die folgenden Aspekte zu konvertieren:- Unicode Yen für Japanisch
- Unicode-Won für Koreanisch
Zum Ändern des Standardverhaltens setzen Sie die Umgebungsvariable LDAP_BACKSLASH auf
YES, bevor Sie eine der LDAP-APIs verwenden. Wenn LDAP_BACKSLASH auf YES eingestellt ist, wird das Zeichen X'5C' in das Unicode-Zeichen(\)umgewandelt und nicht in japanische Yen oder koreanische Won.
Fehler
Jede der LDAP-Benutzerkonfigurations-APIs gibt einen LDAP-Rückkehrcode ungleich null zurück, wenn ein Fehler auftritt. Weitere Details finden Sie unter LDAP_ERROR .