Verwenden von Unicode-Daten
Die Unicode-Spezifikation definiert ein Codierschema für die meisten weltweit in Unternehmen verwendeten Zeichen. Sämtliche Computer übersetzen mithilfe der Unicode-Spezifikation die Bitmuster in Unicode-Daten einheitlich in Zeichen. Dies stellt sicher, dass das gleiche Bitmuster auf allen Computern immer in das gleiche Zeichen konvertiert wird. Daten können von einer Datenbank oder einem Computer frei auf eine andere bzw. einen anderen übertragen werden, ohne dass darauf geachtet werden muss, ob das Empfängersystem Fehler beim Übersetzen des Bitmusters in Zeichen macht.
Ein Problem bei Datentypen, die 1 Byte zur Codierung der einzelnen Zeichen verwenden, besteht darin, dass der Datentyp nur 256 verschiedene Zeichen darstellen kann. Dies hat zur Folge, dass es mehrere Codierspezifikationen (oder Codepages) für verschiedene Alphabete, wie z. B. europäische Alphabete, geben muss, die jeweils relativ klein sind. Außerdem ist es unmöglich, solche Systeme wie das japanische Kanji-Alphabet oder das koreanische Hangul-Alphabet zu unterstützen, die tausende von Zeichen enthalten.
Jede Microsoft SQL Server 2005-Sortierung verfügt über eine Codepage, die definiert, welche Bitmuster die einzelnen Zeichen in char-, varchar- und text-Werten darstellt. Einzelnen Spalten- und Zeichenkonstanten kann jeweils eine andere Codepage zugewiesen werden. Clientcomputer verwenden die dem Gebietsschema des Betriebssystems zugeordnete Codepage zur Interpretation von Zeichenbitmustern. Es sind viele verschiedene Codepages verfügbar, und einige Zeichen werden in einigen Codepages aufgeführt, in anderen hingegen nicht. Manche Zeichen werden auf einigen Codepages mit einem Bitmuster definiert, während sie auf anderen Codepages wiederum mit anderen Bitmustern definiert werden. Wenn Sie internationale Systeme erstellen, die verschiedene Sprachen unterstützen müssen, gestaltet sich die Auswahl von Codepages für sämtliche Computer, die die Sprachanforderungen mehrerer Länder und Regionen erfüllen müssen, als schwierig. Außerdem kann nur schwer sichergestellt werden, dass jeder Computer die richtigen Übersetzungen vornimmt, wenn er eine Schnittstelle zu einem System besitzt, das eine andere Codepage verwendet.
Die Unicode-Spezifikation löst dieses Problem, indem 2 Byte zur Codierung der einzelnen Zeichen verwendet werden. Es gibt genügend verschiedene Muster (65.536) in 2 Byte für eine Spezifikation, die die gebräuchlichsten Geschäftssprachen abdeckt. Da alle Unicode-Systeme einheitlich die gleichen Bitmuster zur Darstellung aller Zeichen verwenden, tritt das Problem der falschen Konvertierung von Zeichen beim Verschieben von einem System auf ein anderes nicht auf. Sie können Probleme mit der Zeichenkonvertierung durch Verwenden von Unicode-Datentypen innerhalb des Systems minimieren.
In SQL Server unterstützen die folgenden Datentypen Unicode-Daten:
- nchar
- nvarchar
- ntext
Hinweis: Das Präfix n für diese Datentypen stammt aus dem SQL-92-Standard für nationale Datentypen (Unicode).
Die Verwendung von nchar, nvarchar und ntext entspricht char, varchar bzw. text. Dabei gilt jedoch Folgendes:
- Unicode unterstützt ein breiteres Spektrum von Zeichen.
- Zum Speichern von Unicode-Zeichen wird mehr Speicherplatz benötigt.
- Die maximale Größe von nchar-Spalten beträgt 4.000 Zeichen, und nicht 8.000 Zeichen wie bei char und varchar.
- Die maximale Größe für nvarchar-Spalten beträgt 2^31-1 Byte, wenn der max-Bezeichner verwendet wird. Weitere Informationen zu nvarchar(max) finden Sie unter Verwenden von Datentypen mit umfangreichen Werten.
- Unicode-Konstanten werden mit einem vorangestellten N angegeben: N'Eine Unicode-Zeichenfolge'.
- Alle Unicode-Daten verwenden den Zeichensatz, der durch den Unicode-Standard definiert wird. Unicode-Sortierungen, die für Unicode-Spalten verwendet werden, basieren auf Attributen wie z. B. Unterscheidung nach Groß- und Kleinschreibung, Unterscheidung nach Akzent, Unterscheidung nach Kana, Unterscheidung nach Breite und binär.
Siehe auch
Andere Ressourcen
Datentypen (Transact-SQL)
NCHAR (Transact-SQL)
UNICODE (Transact-SQL)