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

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Datenbankadministration » Konfiguration Ihrer Datenbank » Internationale Sprachen und Zeichensätze » Zeichensätze

 

Einbyte-Zeichensätze

Bei vielen Sprachen ist die Anzahl der Zeichen so gering, dass ein Byte ausreicht, um alle Zeichen zu beschreiben. In einem solchen Einbyte-Zeichensatz wird jedes Zeichen durch ein Byte repräsentiert, eine zweistellige hexadezimale Zahl.

Insgesamt können nicht mehr als 256 Zeichen in einem Einbyte-Zeichensatz dargestellt werden. In keinem Einbyte-Zeichensatz können alle weltweit verwendeten Buchstaben, einschließlich aller Sonderzeichen, gespeichert werden. Dieses Problem wurde durch die Entwicklung so genannter Codepages gelöst, in denen eine Gruppe von Zeichen beschrieben wird, die jeweils für eine Sprache geeignet sind. Codepage 1253 z.B. enthält den griechischen Zeichensatz und Codepage 1252 westeuropäische Sprachen. Es gibt viele Codepages, und viele Namen für Codepages. Die oben angeführten Codepages sind solche für Windows.

Untere und obere Seiten

Mit wenigen Ausnahmen sind die Zeichen 0 bis 127 bei allen Codepages gleich. Die Zuordnung dieses Zeichenbereichs nennt man ASCII-Zeichensatz. Er enthält das Alphabet der englischen Sprache in Groß- und Kleinschreibung sowie übliche Satzzeichen und die Ziffern. Dieser Bereich wird auch als 7-Bit-ASCII (da nur sieben Bit für die Darstellung der Zahlen bis 127 benötigt werden) oder untere Codepage bezeichnet. Die Zeichen von 128 bis 255 werden erweiterte Zeichen oder obere-Codepage-Zeichen genannt und unterscheiden sich von Codepage zu Codepage.

Probleme mit der Kompatibilität von Codepages treten nur selten auf, wenn die einzigen benutzten Zeichen aus dem englischen Alphabet stammen, da diese im ASCII-Bereich der Codepage (0 bis 127) vorkommen. Wenn hingegen andere Zeichen benutzt werden, wie dies im Allgemeinen bei Deutsch der Fall ist, kann es zu Problemen kommen, wenn die Datenbank und die Anwendung unterschiedliche Codepages verwenden.

Nehmen wir z.B. eine Datenbank, die den UTF-8-Zeichensatz verwendet und eine Tabelle aus einer Datei lädt, die cp1252-Daten enthält, ohne dass in der LOAD TABLE-Anweisung die Kodierung als cp1252 angegeben ist. Da keine Kodierung angegeben ist, werden die Daten als in UTF-8 kodiert angesehen, daher findet keine Zeichenkonvertierung statt und die cp1252-Kodierung wird direkt in der Datenbank gespeichert. Das bedeutet, dass Zeichen wie das Euro-Symbol, das in cp1252 als hex 80 dargestellt wird, nicht in UTF-8 konvertiert werden. Das Euro-Symbol in UTF-8 wird durch die Drei-Byte-Sequenz E2 82 AC dargestellt, wird aber in diesem Fall in der Datenbank als 80 gespeichert. Wenn daher eine Anwendung Daten anfordert, versucht der Datenbankserver, die Daten von UTF-8 in den Clientzeichensatz zu konvertieren. Das Ergebnis der Konvertierung werden beschädigte Zeichen sein.