Anfang des Inhaltsbereichs

 UNICODE 

Datentypen wie z. B. CHAR ASCII sind im wesentlichen für den amerikanischen und zentraleuropäischen Sprachraum geeignet. In anderen Sprachräumen wird üblicherweise ein Codeattribut für diese Datentypen verwendet, das einen von ASCII abweichenden Präsentationscode auch zur internen Ablage im Datenbanksystem verwendet. Dies führt zu Problemen, wenn Sie aus anderen Sprachräumen auf diese Datenbanksysteme zugreifen wollen oder wenn ein Datenaustausch zwischen Datenbanksystemen unterschiedlicher Sprachräume erforderlich ist.

Diese Probleme können durch eine Zeichencodierung gemäß UNICODE vermieden werden. UNICODE ist ein internationaler Standard und kann alle in Alphabeten verwendeten Zeichen eindeutig in einem einzigen Zeichensatz ausdrücken.

Eine UNICODE-Datenbank verwendet für Metadaten und Anwendungsdaten UNICODE gemäß ISO 10646. Intern werden die Daten im UTF-16/UCS-2-Format abgelegt.

Die Ablage von Daten im Format UTF-16/UCS-2 benötigt doppelt so viel Speicherplatz wie eine Ablage der Daten im Format ASCII, da die Kodierung mit 16 statt mit 8 Bit erfolgt.

UNICODE in Datenbankschnittstellen

SQL-Anweisungen können UNICODE-Literale und UNICODE-Bezeichner enthalten. Voraussetzung für die Umsetzung dieser SQL-Anweisungen in einer UNICODE-fähigen Datenbankinstanz ist ein UNICODE-fähiger Client (C/C++-Precompiler, JDBC, ODBC oder die Query Tools SQL Studio und Web SQL Studio).

Die Datenbankschnittstellen JDBC, ODBC, der C/C++-Precompiler und Python unterstützen UNICODE.

Datenbankschnittstelle

Besonderheiten in Bezug auf UNICODE

JDBC

Da Java mit UNICODE-Zeichenketten arbeitet, kann Java UNICODE-Spalten lesen und schreiben. Wenn Sie UNICODE auch in SQL-Anweisungen verwenden wollen, dann setzen Sie die UNICODE-CONNECT-Eigenschaft auf true. SQL-Anweisungen werden dann an die Datenbankinstanz im UTF-16/UCS-2-Format übergeben.

Siehe auch Beispiel

ODBC

Microsoft Windows:

Mit der Datenbanksoftware wird ab Version 7.4.03.26 sowohl ein UNICODE-fähiger ODBC-Treiber ausgeliefert als auch ein Treiber ohne UNICODE.

Der Treiber MaxDB (Unicode) (oder SAP DB (Unicode)) entspricht dem bisherigen Treiber SAP DB 7.4. Er implementiert das UNICODE-Interface von ODBC (z. B. SQLConnectW) und kommuniziert mit einem UNICODE-fähigen Datenbankkern nur per UNICODE. Mit einem nicht UNICODE-fähigen Kern erfolgt die Kommunikation in ASCII.

Der Treiber MaxDB (oder SAP DB) implementiert das ASCII-Interface von ODBC (keine Wide-Funktionen wie SQLConnectW) und kommuniziert nur per ASCII mit dem Datenbankkern. Diese Kommunikation ist hinsichtlich der Netzbelastung effizienter und hat weniger Restriktionen, z.B. bezüglich der maximalen Länge von SQL-Anweisungen.

UNIX/Linux:

Auf Plattformen, bei denen der Standard-UNICODE-Typ WCHAR_T mit vier Bytes definiert ist, ist der Einsatz des ODBC-Treibers zur Zeit nicht möglich. Datenbank und ODBC-Treiber verarbeiten UNICODE intern als zwei Byte lange Werte.

Im Treiber sind sowohl die ANSI- als auch die UNICODE-Varianten des ODBC-API definiert.

Applikationen, die die Funktionalität eines Driver Manager nicht benötigen, können statisch mit dem ODBC-Treiber gelinkt werden.

C/C++-Precompiler

Sie können mit UNICODE-Daten arbeiten. Der C/C++-Precompiler überprüft beim Aufbau einer Datenbanksitzung, ob die Datenbank UNICODE-fähig ist.

Python

Python 2.x: Es können UNICODE-Spalten gelesen und geschrieben werden. UNICODE-Zeichenketten können nicht als SQL-Anweisungen verwendet werden.

Python 1.5.2: UNICODE-Ausgabewerte werden nach ASCII konvertiert. Wenn diese Umwandlung fehlschlägt, dann wird ein Fehler gemeldet.

 

Ende des Inhaltsbereichs