Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Betroffene Plattformen
Clients : Windows XP, Windows Vista, Windows 7
Server : Windows Server 2003, Windows Server 2008, Windows Server 2008 R2
Feature-Auswirkungen
Schweregrad – Hoch
Häufigkeit : Niedrig (nur wenige Apps betroffen, aber wenn betroffen, immer unterbrochen)
Beschreibung
Die NlS-Funktionen (National Language Support) unterstützen Anwendungen dabei, die verschiedenen sprach- und gebietsschemaspezifischen Anforderungen von Benutzern auf der ganzen Welt zu unterstützen. Neue Windows-Versionen enthalten fast immer NLS-Änderungen. Diese Änderung wirkt sich auf Sortierung und Sortierung aus, und damit auf Anwendungen mit persistenten Indizes.
Eine Sortierungstabelle weist zwei Zahlen auf, die ihre Version (Revision) identifizieren: die definierte Version und die NLS-Version. Beide Versionen sind DWORD-Werte, die aus einer Hauptversion und einer Nebenversion bestehen. Das erste Byte eines Werts ist reserviert, die nächsten beiden Bytes stellen die Hauptversion dar, und das letzte Byte stellt die Nebenversion dar. In Hexadezimalbegriffen ist das Muster 0xRRMMMMmm, wobei R gleich Reserviert, M gleich Haupt und m gleich Minor ist. Beispielsweise wird eine Hauptversion von 3 mit der Nebenversion 4 als 0x304 dargestellt.
Bei einer Hauptversion ändern sich mindestens ein Codepunkt, sodass die Anwendung alle Daten neu indizieren muss, damit Vergleiche gültig sind. Bei einer Nebenversion wird nichts verschoben, aber Codepunkte werden hinzugefügt. Für diesen Versionstyp muss die Anwendung nur Zeichenfolgen mit zuvor nicht abortbaren Werten neu indizieren. Zusammenfassend lässt sich sagen, was die Versionsnummern im Verhältnis zu den Datenänderungen in den gebietsschemaspezifischen Ausnahmetabellen und Standardtabellen bedeuten:
NLSVersion Major : Geänderte Codepunkte in den "Ausnahme"- oder gebietsschemaspezifischen Tabellen
NLSVersion Minor : Neue Codepunkte in den "Ausnahme"- oder gebietsschemaspezifischen Tabellen hinzugefügt
DefinedVersion Major : Codepunkte in der Standardtabelle geändert
DefinedVersion Minor – Neue Codepunkte in der Standardtabelle hinzugefügt
Sortieren von Versionsnummern für veröffentlichte Versionen:
Betriebssystem | Release | Version (0xRRMMMMMMMmm) |
---|---|---|
Windows XP | RTM/SP1/SP2/SP3/... | N/A– keine GetNLSVersion()-API |
Windows Server 2003 | RTM/SP1 | 0x00 0000 01 |
Windows Vista | RTM/SP1 | 0x00 0405 00 |
WindowsServer 2008 | RTM | 0x00 0501 00 / 0x00 5001 00 |
Windows 7 | RTM | 0x00060100 |
Manifestation
Anwendungen (z. B. Datenbanken) mit persistenten Indizes, die die NLS-Version nicht überprüfen und bei Versionsänderungen erneut indiziert werden, können nicht ordnungsgemäß sortiert werden oder möglicherweise keine angeforderten Ergebnisse liefern.
Bei Benutzeroberflächen können Listen (z. B. alphabetisch, numerisch, alphanumerisch, Symbole usw.) falsch sortiert werden.
Lösung
Ihre Anwendung kann getNLSVersionEx (Windows Vista oder höher) oder GetNLSVersion (vor Windows Vista) aufrufen, um sowohl die definierte Version als auch die NLS-Version für eine Sortierungstabelle abzurufen.
- GetNLSVersionEx:
Ruft Informationen zur aktuellen Version einer angegebenen NLS-Funktion für ein durch den Namen angegebenes Gebietsschema ab.
Mit dieser Funktion kann eine Anwendung wie Active Directory ermitteln, ob sich eine NLS-Änderung auf das Gebietsschema auswirkt, das für eine bestimmte Indextabelle verwendet wird. Andernfalls muss die Tabelle nicht erneut indiziert werden. Weitere Informationen finden Sie unter Behandeln von Gebietsschema- und Sprachinformationen.
Diese Funktion unterstützt benutzerdefinierte Gebietsschemas. Wenn lpLocaleName ein zusätzliches Gebietsschema angibt, sind die abgerufenen Daten die richtigen Daten für die Sortierungsreihenfolge, die diesem zusätzlichen Gebietsschema zugeordnet ist.
Hinweis: Versionen von Windows vor Windows Vista unterstützen GetNLSVersionEx nicht.
- GetNLSVersion (verwenden Sie für Anwendungen, die unter Windows-Versionen vor Windows Vista ausgeführt werden):
Ruft Informationen zur aktuellen Version einer angegebenen NLS-Funktion für ein durch den Bezeichner angegebenes Gebietsschema ab.
Mit dieser Funktion kann eine Anwendung wie Active Directory ermitteln, ob sich eine NLS-Änderung auf den Gebietsschemabezeichner auswirkt, der für eine bestimmte Indextabelle verwendet wird. Andernfalls muss die Tabelle nicht erneut indiziert werden. Weitere Informationen finden Sie unter Behandeln von Gebietsschema- und Sprachinformationen.
Hinweis: Diese Funktion ruft nur Informationen zu einem gebietsschema ab, das durch den Bezeichner angegeben wird. Die GetNLSVersionEx-Funktion unterstützt zusätzliche Gebietsschemas, Features und RFC 4646-Namen. Versionen von Windows vor Windows Vista unterstützen GetNLSVersionEx jedoch nicht.
Anwendungen, die nur unter Windows Vista und höher ausgeführt werden sollen, sollten GetNLSVersionEx für diese Funktion verwenden.
GetNLSVersionEx bietet gute Unterstützung für zusätzliche Gebietsschemas.
Kompatibilitätstest
Schritte, um zu ermitteln, ob sich eine Sortierungsversion geändert hat (das heißt, Sie müssen neu indiziert werden):
Verwenden Sie GetNLSVersionEx(), um eine NLSVERSIONINFOEX-Struktur abzurufen, wenn Sie die ursprüngliche Indizierung Ihrer Daten ausführen.
Speichern Sie die folgenden Eigenschaften mit Ihrem Index, um die Version zu identifizieren: NLSVERSIONINFOEX.dwNLSVersion und NLSVERSIONINFOEX.dwDefinedVersion – Diese beiden Eigenschaften geben zusammen die Version der verwendeten Sortiertabelle an.
NLSVERSIONINFOEX.dwEffectiveId : Dies gibt das effektive Gebietsschema Ihrer Art an. Ein benutzerdefiniertes Gebietsschema zeigt auf die Sortierung eines In-Box-Gebietsschemas.Wenn Sie den Index verwenden, verwenden Sie GetNlsVersionEx(), um die Version Ihrer Daten zu ermitteln.
Wenn sich eine der drei Eigenschaften geändert hat, können die von Ihnen verwendeten Sortierdaten unterschiedliche Ergebnisse zurückgeben, und bei jeder Indizierung, die Sie haben, können Datensätze möglicherweise nicht gefunden werden.
Wenn Sie WISSEN, dass Ihre Daten keine ungültigen Unicode-Codepunkte enthalten (d.a. alle Ihre Zeichenfolgen haben true aus einem Aufruf von IsNLSDefinedString()) zurückgegeben, können Sie sie als gleich betrachten, wenn SICH NUR das niedrige Byte von dwNLSVersion und dwDefinedVersion geändert hat (die oben beschriebenen Nebenversionen).
Links zu anderen Ressourcen
- Internationalisierung für Windows-Anwendungen
- GetNLSVersionEx-Funktion
- GetNLSVersion-Funktion
- So ermitteln Sie, ob sich die Sortierungsversion geändert hat