Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Zeichensätze und Sortierfolgen

Wie Exponential Text auf jeder der sechs Engines als UTF-8 speichert, welchen Zeichensatz und welche Sortierfolge Sie anlegen, wie sich die Verbindung von MySQL und MariaDB von den Tabellen unterscheidet, wie sich…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/database-administrators/character-sets-and-collations.md

On this page

This page is a translation. Read the English original

Zeichensätze und Sortierfolgen

Diese Seite richtet sich an Datenbankadministratoren, die die Datenbank einer Exponential-Website anlegen oder eine bestehende auf Kodierungsprobleme prüfen. Exponential speichert und liefert Text als UTF-8; jede Engine benennt das anders und vergleicht Zeichenketten anders. Diese Seite beantwortet: was Sie auf jeder Engine anlegen, wo sich die Verbindung von den Tabellen unterscheiden kann und wie sich die Schreibweise auf Suchen auswirkt. Quelle: Datenbankunterstützung, Zeichensätze und Sortierfolgen.

Inhalt

  1. Was Sie anlegen, je Engine
  2. Die Verbindung von MySQL und MariaDB
  3. Groß-/Kleinschreibung und Vergleiche
  4. Eine laufende Website prüfen
  5. Eine alte Datenbank umwandeln
  6. Checkliste

Was Sie anlegen, je Engine

EngineLegen Sie die Datenbank an mitHinweise
SQLite 3nichts zu wählenSQLite speichert Text als UTF-8
PostgreSQL--encoding=UTF8 --template=template0template0 lässt Sie die Kodierung unabhängig vom Standard des Servers wählen
MongoDBnichts zu wählenBSON-Zeichenketten sind UTF-8
MariaDBCHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ciDer Assistent lehnt eine Datenbank ab, deren Standardzeichensatz nicht UTF-8 ist
OracleDatenbankzeichensatz AL32UTF8Der Treiber verbindet sich in AL32UTF8; NLS_LANG wird nicht gebraucht
MySQLCHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ciWie MariaDB

Der Oracle-Zeichensatz wird beim Anlegen der Datenbank gewählt; er ist eine Eigenschaft der ganzen Datenbank, ein Schema für Exponential gehört also in eine AL32UTF8-Datenbank.

Die Verbindung von MySQL und MariaDB

site.ini [DatabaseSettings] Charset=utf-8 (der Standard) wird als utf8 an den Server gesendet, was beide Server als das Drei-Byte-utf8mb3 behandeln. Zeichen außerhalb der Basic Multilingual Plane, etwa Emoji, können die Verbindung nicht passieren, selbst wenn die Tabellen utf8mb4 sind. Halten Sie die Datenbank trotzdem in utf8mb4.

Lässt sich der Zeichensatz der Verbindung nicht setzen, läuft der Treiber weiter und protokolliert "could not set the connection charset"; Text kommt dann mit ? anstelle der fehlenden Zeichen zurück. Die Warnung wird nur protokolliert, wenn Warnungen protokolliert werden (site.ini [DebugSettings] AlwaysLog[]=warning). Details: MySQL und MariaDB: utf8mb4, der Verbindungszeichensatz und InnoDB.

Groß-/Kleinschreibung und Vergleiche

Engine=LIKEWie Sie es ändern
SQLite 3mit Beachtungignoriert sie nur für ASCII-Buchstaben
PostgreSQLmit Beachtungmit Beachtung (ILIKE ignoriert sie)lower(...) vergleichen
MongoDBmit Beachtungeine Collation auf der Abfrage oder dem Index
MariaDB, MySQLStandard-Sortierfolgen ignorieren sieignoriert sieeine binäre oder _cs-Sortierfolge
Oraclemit Beachtung (binär)mit BeachtungOracleCaseInsensitive=enabled (NLS_COMP=LINGUISTIC, NLS_SORT), dazu linguistische Indizes aus ext:ezoracle:ci-indexes --create

Die Folge: Eine Suche nach Login oder Bezeichner, die gegen die Sortierfolgen von MySQL ohne Beachtung der Groß-/Kleinschreibung geschrieben wurde, findet auf PostgreSQL, Oracle oder MongoDB womöglich nichts. Der eigene Code von Exponential berücksichtigt das; Erweiterungen und Ihre eigenen Berichtsabfragen müssen lower(...) auf beiden Seiten vergleichen, wo die Schreibweise keine Rolle spielen darf (SQL von Erweiterungen für jede Engine prüfen).

Benutzer-Logins sind ein Sonderfall: exp:userlogincheck listet Logins, die mehr als ein Benutzerkonto hat (zum Beispiel derselbe Login in zwei Schreibweisen), und --fix-index fügt den eindeutigen Index auf ezuser.login hinzu, sobald es keine mehr gibt (php bin/php/console list beschreibt es).

Eine laufende Website prüfen

  • Setup > Systeminformationen, Karte Datenbank: der Zeichensatz der Verbindung; die Seite warnt, wenn er nicht UTF-8 ist (Systeminformationen).

  • MySQL und MariaDB:

    SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
      FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = 'exponential';
    SELECT TABLE_NAME, TABLE_COLLATION FROM information_schema.TABLES
     WHERE TABLE_SCHEMA = 'exponential' AND TABLE_COLLATION NOT LIKE 'utf8%';
  • PostgreSQL: psql -l zeigt die Kodierung jeder Datenbank.

  • Oracle: SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET';

Eine alte Datenbank umwandeln

Eine Datenbank aus einem alten Release in einem Einzelbyte-Zeichensatz wird mit bin/php/ezconvertdbcharset.php umgewandelt (nur MySQL, PostgreSQL und Oracle). Geben Sie die Sortierfolge ausdrücklich an; ihr Standard ist utf8_general_ci. Führen Sie es nach einer Sicherung auf einer Kopie aus (MySQL und MariaDB: utf8mb4).

Checkliste

  • To do: Die Datenbank wurde im UTF-8-Zeichensatz der Engine angelegt.
  • To do: MySQL und MariaDB: Jede Tabelle ist utf8mb4; keine Zeichensatzwarnung in var/log/warning.log.
  • To do: Oracle: NLS_CHARACTERSET ist AL32UTF8.
  • To do: Erweiterungen und Berichte vergleichen ohne Beachtung der Groß-/Kleinschreibung, wo sie müssen.

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x