Benutzerdefinierte Schreibungszuordnungen und Sortierregeln
Aktualisiert: November 2007
Die Schreibungszuordnungen, die alphabetische Reihenfolge und die Konventionen zum Sortieren von Elementen unterscheiden sich je nach Kultur. Sie sollten mit diesen Variationen vertraut sein und beachten, dass die Ergebnisse von Zeichenfolgenoperationen daher je nach Kultur unterschiedlich sein können.
Anhand der dem türkischen Alphabet eigenen Regeln für die Schreibungszuordnung wird dargestellt, wie Zuordnungen von Groß- und Kleinbuchstaben je nach Sprache variieren können, selbst wenn dieselben Buchstaben verwendet werden. Bei den meisten Alphabeten in lateinischer Schrift ist das Zeichen i (Unicode 0069) der Kleinbuchstabe des Zeichens I (Unicode 0049). Im türkischen Alphabet gibt es hingegen zwei Versionen des Zeichens I: mit Punkt und ohne Punkt. Das Zeichen I (Unicode 0049) ist im Türkischen der Großbuchstabe eines anderen Zeichens: ı (Unicode 0131). Das Zeichen i (Unicode 0069) ist der Kleinbuchstabe eines weiteren Zeichens: İ (Unicode 0130). Ein in den meisten Kulturen erfolgreicher Zeichenfolgenvergleich der Zeichen i (Unicode 0069) und I (Unicode 0049) bei Nichtberücksichtigung der Groß- und Kleinschreibung schlägt für die Kultur Türkisch (Türkei) mit der Bezeichnung "tr-TR" fehl.
Hinweis: |
---|
Die Kultur Aserbaidschanisch (Aserbaidschan, Lateinisch) mit der Bezeichnung "az-AZ-Latn" verwendet ebenfalls diese Regel für Schreibungszuordnungen. |
Im folgenden Codebeispiel wird dargestellt, wie sich die Ergebnisse einer für die Zeichenfolgen "FILE" und "file" ausgeführten Compare()-Operation ohne Berücksichtigung der Groß- und Kleinschreibung je nach Kultur unterscheiden. Der Vergleich gibt true zurück, wenn die CurrentCulture-Eigenschaft auf die Kultur Englisch (USA) mit der Bezeichnung "en-US" festgelegt ist. Der Vergleich gibt false zurück, wenn CurrentCulture auf Türkisch (Türkei) mit der Bezeichnung "tr-TR" festgelegt ist.
Imports System
Imports System.Globalization
Imports System.Threading
Public Class TurkishISample
Public Shared Sub Main()
' Set the CurrentCulture property to English in the U.S.
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
Console.WriteLine("Culture = {0}", _
Thread.CurrentThread.CurrentCulture.DisplayName)
Console.WriteLine("(file == FILE) = {0}", String.Compare("file", _
"FILE", True) = 0)
' Set the CurrentCulture property to Turkish in Turkey.
Thread.CurrentThread.CurrentCulture = New CultureInfo("tr-TR")
Console.WriteLine("Culture = {0}", _
Thread.CurrentThread.CurrentCulture.DisplayName)
Console.WriteLine("(file == FILE) = {0}", String.Compare("file", _
"FILE", True) = 0)
End Sub
End Class
using System;
using System.Globalization;
using System.Threading;
public class TurkishISample
{
public static void Main()
{
// Set the CurrentCulture property to English in the U.S.
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Console.WriteLine("Culture = {0}",
Thread.CurrentThread.CurrentCulture.DisplayName);
Console.WriteLine("(file == FILE) = {0}", (string.Compare("file",
"FILE", true) == 0));
// Set the CurrentCulture property to Turkish in Turkey.
Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");
Console.WriteLine("Culture =
{0}",Thread.CurrentThread.CurrentCulture.DisplayName);
Console.WriteLine("(file == FILE) = {0}", (string.Compare("file",
"FILE", true) == 0));
}
}
Die folgende Ausgabe veranschaulicht, wie sich die Ergebnisse je nach der Kultur unterscheiden, da der Vergleich von i und I ohne Berücksichtigung der Groß- und Kleinschreibung für die Kultur "en-US" true und für die Kultur "tr-TR" false zurückgibt.
Culture = English (United States)
(file == FILE) = True
Culture = Turkish (Turkey)
(file == FILE) = False
Weitere benutzerdefinierte Schreibungszuordnungen und Sortierregeln
Zusätzlich zu den im türkischen und aserbaidschanischen Alphabet verwendeten besonderen Schreibungszuordnungen gibt es weitere benutzerdefinierte Schreibungszuordnungen und Sortierregeln, die bei Zeichenfolgenoperationen beachtet werden müssen. Die Alphabete von neun Kulturen enthalten im ASCII-Bereich (Unicode 0000 bis Unicode 007F) Buchstabenpaare, bei denen ein Vergleich ohne Beachtung der Groß-/Kleinschreibung (z. B. mit Compare()) im Falle einer gemischten Groß-/Kleinschreibung unterschiedliche Ergebnisse liefert. Bei diesen Kulturen handelt es sich um:
Kroatisch (Kroatien), "hr-HR""
Tschechisch (Tschechische Republik), "cs-CZ"
Slowakisch (Slowenien), "sk-SK"
Dänisch (Dänemark), "da-DK"
Norwegisch (Bokmål, Norwegen), "nb-NO"
Norwegisch (Nynorsk, Norwegen), "nn-NO"
Ungarisch (Ungarn), "hu-HU"
Vietnamesisch (Vietnam), "vi-VN"
Spanisch (Spanien, herkömmliche Sortierreihenfolge), "es-ES_tradnl"
Im Dänischen wird beim einem Vergleich der Buchstabenpaare "aA" und "AA" ohne Berücksichtigung der Groß-/Kleinschreibung z. B. keine Übereinstimmung festgestellt. Im vietnamesischen Alphabet wird bei einem Vergleich der Buchstabenpaare "nG" und "NG" ohne Berücksichtigung der Groß-/Kleinschreibung ebenfalls keine Übereinstimmung festgestellt. Obwohl diese Regeln beachtet werden sollten, kommt es in der Praxis nur in seltenen Fällen zu Problemen bei kulturabhängigen Vergleichen dieser Buchstabenpaare, da deren Verwendung in festgelegten Zeichenfolgen und Bezeichnern unüblich ist.
Die Alphabete von sechs Kulturen im ASCII-Bereich weisen die üblichen Schreibungsregeln auf, sie folgen jedoch unterschiedlichen Sortierregeln. Bei diesen Kulturen handelt es sich um:
Estländisch (Estland), "et-EE"
Finnisch (Finnland), "fi-FI"
Ungarisch (Ungarn, technische Sortierreihenfolge), "hu-HU_technl"
Litauisch (Litauen), "lt-LT"
Schwedisch (Finnland), "sv-FI"
Schwedisch (Schweden), "sv-SE"
Im schwedischen Alphabet wird z. B. der Buchstabe "w" beim Sortieren wie der Buchstabe "v" behandelt. Da Sortieroperationen im Anwendungscode weniger häufig durchgeführt werden als Vergleiche auf Gleichheit, treten nur in seltenen Fällen Probleme auf.
Weitere 35 Kulturen verfügen über benutzerdefinierte Schreibungszuordnungen und Sortierregeln außerhalb des ASCII-Bereichs. Diese Regeln beschränken sich in den meisten Fällen auf die Alphabete, die von diesen Kulturen verwendet werden. Daher ist die Wahrscheinlichkeit, dass sie Probleme bereiten, gering.
Ausführliche Informationen über benutzerdefinierte Schreibungszuordnungen und Sortierregeln, die für bestimmte Kulturen gelten, finden Sie unter "The Unicode Standard" auf der Unicode-Homepage (nur auf Englisch verfügbar).
Siehe auch
Konzepte
Kulturunabhängige Zeichenfolgenoperationen