MySQL 5.1 unterstützt zur Speicherung von Unicode-Daten zwei Zeichensätze:
ucs2
(Unicode-Zeichensatz UCS-2)
utf8
(UTF-8-Kodierung des
Unicode-Zeichensatzes)
Bei UCS-2 (binäre Unicode-Darstellung) wird jedes Zeichen durch
einen 2 Byte umfassenden Unicode-Code dargestellt, wobei das
höherwertige Byte zuerst aufgeführt ist. Zum Beispiel:
LATIN CAPITAL LETTER A
hat den Code
0x0041
und wird als 2-Byte-Sequenz gespeichert:
0x00 0x41
. CYRILLIC SMALL LETTER
YERU
(Unicode 0x044B
) wird als
2-Byte-Sequenz gespeichert: 0x04 0x4B
. Weitere
Informationen zu Unicode-Zeichen und ihren Codes erhalten Sie auf
der Unicode-Homepage.
Derzeit kann UCS-2 nicht als Clientzeichensatz verwendet werden,
d. h., SET NAMES 'ucs2'
funktioniert nicht.
Der UTF-8-Zeichensatz (transformierte Unicode-Darstellung) ist eine alternative Möglichkeit zur Speicherung von Unicode-Daten. Er ist entsprechend RFC 3629 implementiert. Die Idee hinter dem UTF-8-Zeichensatz ist die, dass verschiedene Unicode-Zeichen mit Bytesequenzen unterschiedlicher Länge kodiert werden:
Einfache lateinische Buchstaben, Ziffern und Interpunktionszeichen verwenden je ein Byte.
Die Schriftzeichen der meisten europäischen und nahöstlichen Sprachen passen in eine 2-Byte-Sequenz. Dies gilt für die Buchstaben des erweiterten Lateins (einschließlich Tilde, Längestrich, Akut, Gravis und weitere Akzente) sowie das Kyrillische, Griechische, Armenische, Hebräische, Arabische, Syrische usw.
Die koreanischen, chinesischen und japanischen Ideogramme schließlich verwenden je 3 Byte.
RFC 3629 beschreibt Sequenzen, die 1 bis 4 Byte umfassen. Zurzeit umfasst die UTF-8-Unterstützung durch MySQL keine 4-Byte-Sequenzen. (Ein älterer Standard für die UTF-8-Kodierung ist in RFC 2279 enthalten, wo UTF-8-Sequenzen mit einer Länge von bis zu 6 Byte beschrieben werden. RFC 3629 hat RFC 2279 ersetzt, weswegen Sequenzen mit 5 oder 6 Byte heute nicht mehr verwendet werden.)
Tipp: Um mit UTF-8 Speicher zu
sparen, verwenden Sie VARCHAR
statt
CHAR
. Andernfalls muss MySQL 3 Byte pro Zeichen
in einer CHAR CHARACTER SET utf8
-Spalte
reservieren, da dies die maximale Länge ist. So muss MySQL etwa
30 Byte für eine CHAR(10) CHARACTER SET
utf8
-Spalte vorsehen.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.