LCMapStringEx-Funktion (winnls.h)

Ordnet für ein gebietsschema, das durch den Namen angegeben ist, eine Eingabezeichenfolge einer anderen Zeichenfolge zu, indem sie eine angegebene Transformation verwendet, oder generiert einen Sortierschlüssel für die Eingabezeichenfolge.

Hinweis Die Anwendung sollte diese Funktion vor LCMapString aufrufen, wenn sie nur unter Windows Vista und höher ausgeführt werden soll.

 

Syntax

int LCMapStringEx(
  [in, optional]  LPCWSTR          lpLocaleName,
  [in]            DWORD            dwMapFlags,
  [in]            LPCWSTR          lpSrcStr,
  [in]            int              cchSrc,
  [out, optional] LPWSTR           lpDestStr,
  [in]            int              cchDest,
  [in, optional]  LPNLSVERSIONINFO lpVersionInformation,
  [in, optional]  LPVOID           lpReserved,
  [in, optional]  LPARAM           sortHandle
);

Parameter

[in, optional] lpLocaleName

Zeiger auf einen Gebietsschemanamen oder einen der folgenden vordefinierten Werte.

[in] dwMapFlags

Flag, das den Typ der Transformation angibt, die während der Zeichenfolgenzuordnung verwendet werden soll, oder den Typ des zu generierenden Sortierschlüssels. Dieser Parameter kann die folgenden Werte aufweisen.

Flag Bedeutung
LCMAP_BYTEREV Byteumkehr verwenden. Wenn die Anwendung beispielsweise 0x3450 0x4822 übergibt, wird das Ergebnis 0x5034 0x2248.
LCMAP_FULLWIDTH Verwenden Sie ggf. Unicode-Zeichen (Breitzeichen). Dieses Flag und LCMAP_HALFWIDTH schließen sich gegenseitig aus. Mit diesem Flag kann die Zuordnung die Normalisierungsform C verwenden, auch wenn ein Eingabezeichen bereits die volle Breite aufweist. Die Zeichenfolge „は“, die bereits die volle Breite aufweist, wird beispielsweise zu „ば“ normalisiert. Weitere Informationen finden Sie unter Unicode normalization forms (Unicode-Normalisierungsformen).
LCMAP_HALFWIDTH Verwenden Sie ggf. schmale Zeichen. Dieses Flag und LCMAP_FULLWIDTH schließen sich gegenseitig aus.
LCMAP_HIRAGANA Ordnen Sie alle Katakana-Zeichen hiragana zu. Dieses Flag und LCMAP_KATAKANA schließen sich gegenseitig aus.
LCMAP_KATAKANA Ordnen Sie alle Hiragana-Zeichen katakana zu. Dieses Flag und LCMAP_HIRAGANA schließen sich gegenseitig aus.
LCMAP_LINGUISTIC_CASING Verwenden Sie linguistische Regeln für die Groß- und Kleinschreibung anstelle von Dateisystemregeln (Standard). Dieses Flag ist nur mit LCMAP_LOWERCASE oder LCMAP_UPPERCASE gültig.
LCMAP_LOWERCASE Ordnen Sie für Gebietsschemas und Skripts, die Groß- und Kleinbuchstaben verarbeiten können, alle Zeichen Kleinbuchstaben zu.
LCMAP_HASH Gibt einen Hash der unformatierten Sortiergewichtungen einer Zeichenfolge zurück.

Zeichenfolgen, die gleichwertig erscheinen, geben in der Regel denselben Hash zurück (z. B. "hello" und "HELLO" mit LCMAP_IGNORECASE). Einige komplexe Fälle, z. B. ostasiatische Sprachen, können jedoch ähnliche Zeichenfolgen mit identischer Gewichtung aufweisen, die als gleich verglichen werden, aber nicht denselben Hash zurückgeben.

LCMAP_HASH erfordert, dass der Ausgabepuffer die Größe sizeof(int) aufweist.
LCMAP_SIMPLIFIED_CHINESE Ordnen Sie traditionelle chinesische Zeichen zu vereinfachten chinesischen Zeichen zu. Dieses Flag und LCMAP_TRADITIONAL_CHINESE schließen sich gegenseitig aus.
LCMAP_SORTHANDLE
Die Verwendung eines Sortierhandles führt zu minimalen Leistungsverbesserungen und wird abgeraten.
Gibt ein Token zurück, das die aufgelösten Sortierparameter für das Gebietsschema darstellt (z. B. Gebietsschemaname), sodass zukünftige Aufrufe den Sortiernamen übergeben NULL und das zuvor abgefragte Sortierhandle als letzten Parameter (sortHandle) in nachfolgenden Aufrufen von CompareStringEx oder LCMapStringEx übergeben können.

LCMAP_SORTHANDLE erfordert, dass der Ausgabepuffer die Größe sizeof(lparam) aufweist.
LCMAP_SORTKEY Erstellen sie einen normalisierten Sortierschlüssel. Wenn das LCMAP_SORTKEY-Flag nicht angegeben ist, führt die Funktion eine Zeichenfolgenzuordnung durch. Ausführliche Informationen zur Sortierschlüsselgenerierung und Zeichenfolgenzuordnung finden Sie im Abschnitt Hinweise.
LCMAP_TITLECASE Windows 7: Ordnen Sie alle Zeichen der Groß-/Kleinschreibung zu, in der der erste Buchstabe jedes Hauptworts groß geschrieben wird.
LCMAP_TRADITIONAL_CHINESE Ordnen Sie vereinfachte chinesische Zeichen traditionellen chinesischen Zeichen zu. Dieses Flag und LCMAP_SIMPLIFIED_CHINESE schließen sich gegenseitig aus.
LCMAP_UPPERCASE Ordnen Sie für Gebietsschemas und Skripts, die Groß- und Kleinbuchstaben verarbeiten können, alle Zeichen Großbuchstaben zu.

Die folgenden Flags können allein, miteinander oder mit den LCMAP_SORTKEY- und/oder LCMAP_BYTEREV-Flags verwendet werden. Sie können jedoch nicht mit den anderen oben aufgeführten Flags kombiniert werden.

Flag Bedeutung
NORM_IGNORENONSPACE
Ignorieren von Zeichen ohne Zeichenfolgen Bei vielen Skripts (insbesondere lateinischen) fällt NORM_IGNORENONSPACE mit LINGUISTIC_IGNOREDIACRITIC zusammen.
Hinweis NORM_IGNORENONSPACE ignoriert jede sekundäre Unterscheidung, unabhängig davon, ob es sich um eine diakritische oder nicht handelt. Skripts für koreanische, japanische, chinesische und indische Sprachen verwenden diese Unterscheidung unter anderem für andere Zwecke als diakritische Zwecke. LINGUISTIC_IGNOREDIACRITIC bewirkt, dass die Funktion nur tatsächliche diakritische Zeichen ignoriert, anstatt die zweite Sortiergewichtung zu ignorieren.
 
NORM_IGNORESYMBOLS
Ignorieren sie Symbole und Interpunktion.
 

Die unten aufgeführten Flags werden nur mit dem flag LCMAP_SORTKEY verwendet.

Flag Bedeutung
LINGUISTIC_IGNORECASE
Ignorieren Sie die Groß-/Kleinschreibung, linguistisch angemessen.
LINGUISTIC_IGNOREDIACRITIC
Ignorieren Sie nicht sprechende Zeichen, sofern linguistisch angemessen.
Hinweis Dieses Flag erzeugt nicht immer vorhersagbare Ergebnisse, wenn es mit zerlegten Zeichen verwendet wird, d. h. Zeichen, in denen jeweils ein Basiszeichen und ein oder mehrere zeichenfreie Zeichen jeweils unterschiedliche Codepunktwerte aufweisen.
 
NORM_IGNORECASE
Groß-/Kleinschreibung ignorieren. Bei vielen Skripts (insbesondere lateinischen) fällt NORM_IGNORECASE mit LINGUISTIC_IGNORECASE zusammen.
Hinweis NORM_IGNORECASE ignoriert jede tertiäre Unterscheidung, unabhängig davon, ob es sich tatsächlich um linguistische Fälle handelt oder nicht. In arabischen und indischen Skripts unterscheidet dieses Flag beispielsweise alternative Formen eines Zeichens, aber die Unterschiede entsprechen nicht dem linguistischen Fall. LINGUISTIC_IGNORECASE bewirkt, dass die Funktion nur die tatsächliche linguistische Groß- und Kleinschreibung ignoriert, anstatt die dritte Sortiergewichtung zu ignorieren.
 
Hinweis Bei DBCS-Gebietsschemas (Double-Byte Character Set) wirkt sich NORM_IGNORECASE auf alle Unicode-Zeichen sowie auf schmale (ein Byte)-Zeichen aus, einschließlich griechischer und kyrillischer Zeichen.
 
NORM_IGNOREKANATYPE
Unterscheiden Sie nicht zwischen Hiragana- und Katakana-Zeichen. Die entsprechenden Hiragana- und Katakana-Zeichen sind gleich.
NORM_IGNOREWIDTH
Ignorieren Sie den Unterschied zwischen Zeichen mit halber und voller Breite, z. B. C a t == cat. Die Form mit voller Breite ist eine Formatierungsunterscheidung, die in chinesischen und japanischen Skripts verwendet wird.
NORM_LINGUISTIC_CASING
Verwenden Sie linguistische Regeln für die Groß- und Kleinschreibung anstelle von Dateisystemregeln (Standard).
SORT_DIGITSASNUMBERS
Windows 7: Behandeln Sie Ziffern während der Sortierung als Zahlen, z. B. sortieren Sie "2" vor "10".
SORT_STRINGSORT
Behandeln Sie Interpunktion genauso wie Symbole.

[in] lpSrcStr

Zeiger auf eine Quellzeichenfolge, die die Funktion zuordnet oder für die Sortierschlüsselgenerierung verwendet. Diese Zeichenfolge darf nicht die Größe 0 haben.

[in] cchSrc

Größe der durch lpSrcStr. angegebenen Quellzeichenfolge in Zeichen. Die Größe der Quellzeichenfolge kann das abschließende NULL-Zeichen enthalten, muss aber nicht. Wenn das abschließende NULL-Zeichen enthalten ist, wird das Zuordnungsverhalten der Funktion nicht stark beeinflusst, da das beendende NULL-Zeichen als nicht teilbar gilt und sich immer zugeordnet wird.

Die Anwendung kann diesen Parameter auf einen beliebigen negativen Wert festlegen, um anzugeben, dass die Quellzeichenfolge NULL-beendet ist. Wenn LCMapStringEx in diesem Fall im Zeichenfolgenzuordnungsmodus verwendet wird, berechnet die Funktion die Zeichenfolgenlänge selbst und beendet die zugeordnete Zeichenfolge, die durch lpDestStr angegeben wird, null-.

Die Anwendung kann diesen Parameter nicht auf 0 festlegen.

[out, optional] lpDestStr

Zeiger auf einen Puffer, in dem diese Funktion die zugeordnete Zeichenfolge oder einen Sortierschlüssel abruft.

Wenn die Anwendung die -Funktion zum Generieren eines Sortierschlüssels (LCMAP_SORTKEY) verwendet:

  • Der Sortierschlüssel wird im Puffer gespeichert und als undurchsichtiges Bytearray behandelt. Die gespeicherten Werte können an einer beliebigen Position eingebettete 0 Bytes enthalten.
  • Die Zielzeichenfolge kann eine ungerade Anzahl von Bytes enthalten. Das flag LCMAP_BYTEREV kehrt nur eine gerade Anzahl von Bytes um. Das letzte Byte (ungerade Position) im Sortierschlüssel wird nicht umgekehrt.

Wenn der Aufrufer explizit eine Teilmenge der Zeichenfolge anfordert, enthält die Zielzeichenfolge kein abschließendes NULL-Zeichen, es sei denn, der Aufrufer hat es in cchDest angegeben.

Wenn diese Funktion fehlschlägt, kann der Zielpuffer entweder Teilergebnisse oder gar keine Ergebnisse enthalten. In diesem Fall sollten alle Ergebnisse als ungültig angesehen werden.

Hinweis

Beim Festlegen LCMAP_UPPERCASE oder LCMAP_LOWERCASE kann die Zielzeichenfolge denselben Puffer wie die Quellzeichenfolge verwenden. Dies wird jedoch dringend abgeraten, da einige Bedingungen dazu führen können, dass die zurückgegebene Zeichenfolge mit Groß-/Kleinschreibung eine andere Länge aufweist.

[in] cchDest

Größe der Zielzeichenfolge in Zeichen, die durch lpDestStr. angegeben wird. Wenn die Anwendung die -Funktion für die Zeichenfolgenzuordnung verwendet, stellt sie eine Zeichenanzahl für diesen Parameter bereit. Wenn das Leerzeichen für ein abschließendes NULL-Zeichen in cchSrc enthalten ist, muss cchDest auch Leerzeichen für ein abschließendes NULL-Zeichen enthalten.

Wenn die Anwendung die -Funktion verwendet, um einen Sortierschlüssel zu generieren, liefert sie eine Byteanzahl für die Größe. Diese Byteanzahl muss Platz für den Sortierschlüssel 0x00 Abschlusszeichen enthalten.

Die Anwendung kann cchDest auf 0 festlegen. In diesem Fall verwendet die Funktion nicht den lpDestStr-Parameter und gibt die erforderliche Puffergröße für die zugeordnete Zeichenfolge oder den Sortierschlüssel zurück.

[in, optional] lpVersionInformation

Zeiger auf eine NLSVERSIONINFOEX-Struktur , die die Versionsinformationen zur relevanten NLS-Funktion enthält; wird in der Regel von GetNLSVersionEx abgerufen.

Windows Vista, Windows 7: Reserviert; muss auf NULL festgelegt werden.

[in, optional] lpReserved

Reserviert; muss NULL sein.

[in, optional] sortHandle

Reserviert; muss 0 sein.

Hinweis

CompareStringEx und LCMapStringEx können ein Sortierhandle angeben (wenn der Gebietsschemaname NULL ist). Von dieser Verwendung wird für die meisten Apps abgeraten.

Rückgabewert

Wenn die Funktion erfolgreich für die Zeichenfolgenzuordnung verwendet wird, gibt sie die Anzahl der Zeichen in der übersetzten Zeichenfolge zurück (weitere Details finden Sie unter cchSrc und cchDest ).

Wenn die Funktion erfolgreich ist, wenn sie zum Generieren eines Sortierschlüssels verwendet wird, gibt sie die Anzahl der Bytes im Sortierschlüssel zurück.

Diese Funktion gibt 0 zurück, wenn sie nicht erfolgreich ist. Um erweiterte Fehlerinformationen zu erhalten, kann die Anwendung GetLastError aufrufen, wodurch einer der folgenden Fehlercodes zurückgegeben werden kann:

  • ERROR_INSUFFICIENT_BUFFER. Eine angegebene Puffergröße war nicht groß genug, oder sie wurde fälschlicherweise auf NULL festgelegt.
  • ERROR_INVALID_FLAGS. Die für Flags angegebenen Werte waren ungültig.
  • ERROR_INVALID_PARAMETER. Jeder der Parameterwerte war ungültig.

Hinweise

Die Anwendung kann LCMapString oder LCMapStringEx verwenden, um einen Sortierschlüssel zu generieren. Dazu gibt die Anwendung LCMAP_SORTKEY für den dwMapFlags-Parameter an. Weitere Informationen finden Sie unter Behandeln der Sortierung in Ihren Anwendungen.

Hinweis

Sortierschlüssel sind undurchsichtige Bytedatenströme. Aufrufer sollten sie als Bytearray der von der API zurückgegebenen Länge behandeln und sich nicht auf eine interne Struktur verlassen, die möglicherweise vorhanden zu sein scheint. Null, ein oder mehrere Bytes im zurückgegebenen Sortierschlüssel können 0 sein. Das Fehlen oder Vorhandensein eines 0-Byte-Werts sollte nicht erwartet werden.

Eine weitere Möglichkeit für Ihre Anwendung, LCMapString oder LCMapStringEx zu verwenden, sind Zuordnungszeichenfolgen. In diesem Fall gibt die Anwendung keine LCMAP_SORTKEY für den dwMapFlags-Parameter an, sondern stellt eine andere Kombination von Flags bereit. Weitere Informationen finden Sie unter Behandeln der Sortierung in Ihren Anwendungen.

Ab Windows Vista: Diese Funktion kann Daten aus benutzerdefinierten Gebietsschemas verarbeiten. Es ist nicht garantiert, dass die Daten von Computer zu Computer oder zwischen Ausführungen einer Anwendung identisch sind. Wenn Ihre Anwendung Daten beibehalten oder übertragen muss, finden Sie weitere Informationen unter Verwenden persistenter Gebietsschemadaten.

Ab Windows 8: Wenn Ihre App Sprachtags aus dem Windows.Globalization-Namespace an diese Funktion übergibt, muss sie zuerst die Tags konvertieren, indem ResolveLocaleName aufgerufen wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile winnls.h (windows.h einschließen)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

CompareString

FindNLSStringEx

GetNLSVersionEx

Behandeln der Sortierung in Ihren Anwendungen

LCMapString

Unterstützung für landessprachliche Sprachen

Unterstützungsfunktionen für nationalsprachliche Sprachen