Standardmäßig verwendet MySQL den Zeichensatz latin1 (cp1252 West European) und die Sortierung latin1_swedish_ci, die gemäß den in Schweden und Finnland gültigen Regeln sortiert. Diese Standardeinstellungen sind für die Vereinigten Staaten und die meisten Länder Westeuropas angemessen.
Alle MySQL-Binärdistributionen werden mit der Option --with-extra-charsets=complex kompiliert. Hierdurch wird allen Standardprogrammen ein Code hinzugefügt, der es ihnen gestattet, latin1 und alle Multibyte-Zeichensätze in der Binärdatei zu verarbeiten. Andere Zeichensätze werden bei Bedarf aus einer Zeichensatzdefinitionsdatei geladen.
Der Zeichensatz bestimmt, welche Zeichen in Bezeichnern zulässig sind. Die Sortierung hingegen definiert die Art und Weise, wie Strings von den Klauseln ORDER BY und GROUP BY der SELECT-Anweisung sortiert werden.
Sie können den Standardzeichensatz und die Standardsortierung auf dem Server mit den Optionen --character-set-server bzw. --collation-server beim Serverstart ändern. Die Sortierung muss für den gewählten Standardzeichensatz zulässig sein. (Mit der Anweisung SHOW COLLATION können Sie die für den jeweiligen Zeichensatz zulässige Sortierung ermitteln.) Siehe auch Abschnitt 5.2.1, „Befehlsoptionen für mysqld“.
Welche Zeichensätze verfügbar sind, hängt von den Optionen --with-charset= und charset_name--with-extra-charsets= des Befehls configure sowie von den in list-of-charsets | complex | all | none gelisteten Zeichensatz-Konfigurationsdateien ab. Siehe auch Abschnitt 2.8.2, „Typische configure-Optionen“.
SHAREDIR/charsets/Index
Wenn Sie den Zeichensatz während der Ausführung von MySQL ändern, kann sich dies auch auf die Sortierreihenfolge auswirken. Das bedeutet, dass Sie myisamchk -r -q --set-collation=collation_name für alle Tabellen ausführen müssen, da andernfalls Ihre Indizes nicht korrekt sortiert sind.
Wenn ein Client eine Verbindung mit einem MySQL-Server herstellt, gibt der Server dem Client seinen Standardzeichensatz an. Der Client schaltet dann für diese Verbindung auf den betreffenden Zeichensatz um.
Sie sollten mysql_real_escape_string() verwenden, wenn Sie Strings für eine SQL-Abfrage kennzeichnen. mysql_real_escape_string() ist identisch mit der alten Funktion mysql_escape_string(), nur nimmt es den MYSQL-Verbindungs-Handle als ersten Parameter entgegen, sodass der korrekte Zeichensatz bei der Kennzeichnung von Zeichen berücksichtigt werden kann.
Wird der Client mit anderen als den Pfaden kompiliert, unter denen der Server installiert ist, und hat der Benutzer, der MySQL konfiguriert hat, nicht alle Zeichensätze in die MySQL-Binärdatei eingefügt, dann müssen Sie dem Client angeben, wo er die zusätzlichen Zeichensätze finden kann, die er braucht, wenn der Server mit einem anderen Zeichensatz ausgeführt wird als der Client.
Dies können Sie durch Angabe der Option --character-sets-dir tun, die den Pfad zu dem Verzeichnis angibt, in dem die dynamischen MySQL-Zeichensätze gespeichert sind. Sie können beispielsweise in einer Optionsdatei folgende Angaben machen:
[client] character-sets-dir=/usr/local/mysql/share/mysql/charsets
Die Verwendung eines bestimmten Zeichensatzes durch den Client erzwingen Sie wie folgt:
[client]
default-character-set=charset_name
Allerdings ist dies normalerweise nicht erforderlich.
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.
