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ür charset sind dieselben Werte, die für den Tag charset unterstü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_FR und fr_FR sind 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 Byte
Anmerkung: 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.

Wenn eine Verbindung zu einem LDAP V3 -Server besteht, akzeptieren die LDAP-APIs UTF-8 -codierte Zeichenfolgedaten und geben diese zurück. Dies ist der Standardbetriebsmodus. Alternativ kann Ihre Anwendung auf die LDAP-Bibliothek zurückgreifen, um LDAP- V3 -Zeichenfolgedaten in und aus UTF-8 zu konvertieren, indem die API ldap_set_option () verwendet wird, 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)
Die folgenden APIs sind keiner Verbindung zugeordnet und erwarten immer, dass Zeichenfolgedaten, z. B. DNs, bereitgestellt und UTF-8 codiert zurückgegeben werden:
  • 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 APIs konvertieren Ihre Anwendungsdaten in die Codepage und aus der Codepage der Ländereinstellung. Es gibt mehrere Gründe für die Verwendung dieser APIs:
  • 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.

Wenn eine Verbindung zu einem LDAP V3 -Server besteht, akzeptieren die LDAP-APIs UTF-8 -codierte Zeichenfolgedaten und geben diese zurück. Dies ist der Standardbetriebsmodus. Alternativ kann sich Ihre Anwendung auf die LDAP-Bibliothek verlassen, um LDAP- V3 -Zeichenfolgedaten in und aus UTF-8 zu konvertieren, indem sie die API 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)
Die folgenden APIs sind keiner Verbindung zugeordnet und erwarten immer, dass Zeichenfolgedaten, z. B. DNs, bereitgestellt und UTF-8 codiert zurückgegeben werden:
  • 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 APIs konvertieren Ihre Anwendungsdaten in die Codepage und aus der Codepage der Ländereinstellung. Es gibt mehrere Gründe für die Verwendung dieser APIs:
  • 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.
Wenn Ihre Anwendung möglicherweise Zeichenfolgedaten aus einem Verzeichnis extrahiert, das aus anderen Ländern oder Ländereinstellungen stammt, müssen Sie die Anwendung wie folgt entwerfen:
  • 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.
    Betrachten Sie das folgende Szenario:

    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. Da JPEG -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 ld kann 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_SUCCESS wird 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/IEC 10646-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_SUCCESS wird 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_SUCCESS wird 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ür charset sind dieselben Werte, die für den Tag charset unterstü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 (\) (Einzelbyte X'5C') aus der japanischen oder koreanischen Ländereinstellung in Unicode besteht darin, das Zeichen X'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 .

Siehe auch

LDAP-Fehler