Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » SQL-Datentypen » Datentypkonvertierungen » Vergleiche zwischen Datentypen

 

Verlustreiche Konvertierung und Ersetzungszeichen

Wenn ein Zeichen nicht in dem Zeichensatz dargestellt werden kann, in den es konvertiert wird, wird stattdessen ein Ersetzungszeichen verwendet. Konvertierungen dieser Art werden als verlustreich betrachtet, da das ursprüngliche Zeichen verloren geht, wenn es im Zielzeichensatz nicht dargestellt werden kann.

Unterschiedliche Zeichensätze können nicht nur unterschiedliche Ersetzungszeichen enthalten. Das Ersetzungszeichen für einen Zeichensatz kann darüber hinaus ein Nicht-Ersetzungszeichen in einem anderen Zeichensatz sein. Dies ist wichtig zu wissen, wenn mehrere Konvertierungen eines Zeichens durchgeführt werden, da das letzte Zeichen möglicherweise nicht als das erwartete Ersetzungszeichen des Zielzeichensatzes angezeigt wird.

Beispiel: Der Client-Zeichensatz ist Windows-1252 und der Datenbank-Zeichensatz ist ISO_8859-1:1987 (der US-Standard für einige Unix-Versionen). Eine Nicht-Unicode-Clientanwendung (z.B. Embedded SQL) versucht, das Euro-Symbol in eine CHAR-, VARCHAR- oder LONG VARCHAR-Spalte einzufügen. Da das Zeichen nicht im CHAR-Zeichensatz enthalten ist, wird das Ersetzungszeichen für ISO_8859-1:1987, 0x1A, eingefügt.

Wenn dieses ISO_8859-1:1987-Ersetzungszeichen dann als Unicode (z.B. durch Ausführen des Befehls SELECT * FROM t in einer gebundenen SQL_C_WCHAR-Spalte in ODBC) abgerufen wird, wird es zum Unicode-Punktzeichen U+001A. (In Unicode ist der Code-Point U+001A das Steuerzeichen für die Trennung von Datensätzen.) Allerdings ist das Ersetzungszeichen für Unicode der Code Point U+FFFD. Dieses Beispiel zeigt: Auch wenn in Ihren Daten Ersetzungszeichen enthalten sind, können diese Zeichen aufgrund von mehreren Konvertierungen möglicherweise nicht in die Ersetzungszeichen des Zielzeichensatzes konvertiert werden.

Daher ist es wichtig, die Verwendung von Ersetzungszeichen zu verstehen und zu testen, wenn zwischen mehreren Zeichensätzen konvertiert wird.

Die on_charset_conversion_failure-Option kann das Verhalten während der Konvertierung ermitteln, wenn ein Zeichen nicht im Zielzeichensatz dargestellt werden kann. Siehe on_charset_conversion_failure-Option.

 Siehe auch