Unicode in globalisierten Anwendungen verwenden
Sie können Unicode-Daten einfügen und abrufen. Daten werden transparent zwischen Datenbank und Client-Programmen konvertiert, wodurch sichergestellt ist, dass Client-Programme unabhängig vom Datenbankzeichensatz und vom länderspezifischen Zeichensatz sind.
Siehe:
-
Oracle Database Globalization Support Guide für weitere Informationen zur SQL- und PL/SQL-Programmierung mit Unicode
-
Oracle Database Globalization Support Guide für allgemeine Informationen zur Programmierung mit Unicode
Unicode-Zeichenfolgenliterals in SQL und PL/SQL darstellen
Es gibt drei Möglichkeiten, ein Unicode-Zeichenfolgenliteral in SQL oder PL/SQL darzustellen, wie in den folgenden Beispielen dargestellt.
-
N'string'
Beispiel:
N'résumé'.Einschränkungen: Siehe "Datenverlust während Zeichensatzkonvertierung verhindern".
-
NCHR(number)
Die SQL-Funktion NCHR gibt das Zeichen zurück, dessen binäres Äquivalent die Zahl im länderspezifischen Zeichensatz ist. Das zurückgegebene Zeichen hat den Datentyp NVARCHAR2.
Beispiel:
NCHR(36)stellt im länderspezifischen Standardzeichensatz AL16UTF16 $ dar.Einschränkungen: Die Portabilität des Werts von NCHR(number) ist auf Anwendungen begrenzt, die denselben nationalen Zeichensatz verwenden.
-
UNISTR('string')
Die SQL-Funktion UNISTR konvertiert eine Zeichenfolge in den länderspezifischen Zeichensatz.
Aus Gründen der Portabilität und Beibehaltung von Daten empfiehlt Oracle, dass die Zeichenfolge nur ASCII-Zeichen und Unicode-Codierungswerte enthält. Ein Unicode-Codierungswert hat das Format \xxxx, wobei xxxx der hexadezimale Wert eines Zeichencodewertes im Codierungsformat UCS-2 ist.
Beispiel:
UNISTR('G\0061ry')stellt "Gary" darASCII-Zeichen werden in den Datenbankzeichensatz und anschließend in den länderspezifischen Zeichensatz konvertiert. Unicode-Codierungswerte werden direkt in den länderspezifischen Zeichensatz konvertiert.
Siehe:
-
Oracle Database Globalization Support Guide enthält weitere Informationen zum Thema Unicode-Zeichenfolgenliterale
-
Oracle Database SQL Language Reference für weitere Informationen zur NCHR-Funktion
-
Oracle Database SQL Language Reference für weitere Informationen zur UNISTR-Funktion
Datenverluste bei der Konvertierung von Zeichensätzen vermeiden
Als Teil einer SQL- bzw. PL/SQL-Anweisung wird ein Literal (mit oder ohne Präfix N) im selben Zeichensatz wie die restliche Anweisung codiert. Auf der Clientseite wird die Anweisung im Clientzeichensatz codiert, welcher vom Parameter NLS_LANG bestimmt wird. Auf der Serverseite wird die Anweisung im Datenbank-Zeichensatz codiert.
Bei der Übertragung der SQL- bzw. PL/SQL-Anweisung vom Client zur Datenbank wird der Zeichensatz der Anweisung entsprechend konvertiert. Enthält der Datenbank-Zeichensatz nicht alle Zeichen, die der Client in den Textliteralen verwendet, gehen bei der Konvertierung Daten verloren. NCHAR-Zeichenfolgenliterale sind dafür anfälliger als CHAR-Textliterale, da diese auf Unabhängigkeit vom Datenbank-Zeichensatz ausgerichtet sind.
Um Datenverlust in einem inkompatiblen Datenbank-Zeichensatz zu vermeiden, können Sie die NCHAR-Literalersetzungsfunktion aktivieren. Weitere Informationen finden Sie in der Dokumentation Oracle Database Globalization Support Guide.