Bestehende CONTENIDO Seiten auf UTF-8 umstellen
Früher gab es CONTENIDO Installationen, die mit der Kodierung ISO-8859-1 liefen, in der Inhalte mit dieser Kodierung in der Datenbank abgelegt wurden. Daher kann es zu Problemen kommen, wenn man diese Installationen auf eine neuere CONTENIDO Version (z.B. CONTENIDO 10.*) mit UTF-8 aktualisiert.
Im folgender Anleitung werden die Schritte beschrieben, mit denen man die Umstellung der Datenbankinhalte auf UTF-8 recht einfach realisieren kann.
Datenbank exportieren
Die Datenbank mit einer Datenbank-Administrationsoftware (z.B. phpMyAdmin) oder mit mysqldump exportieren. Mit mysqldump
geht das in der Kommandozeile wie folgt:
mysqldump -u user -p database > db_export.sql
Wichtig:
Eine Sicherung der Exportdatei db_export.sql
machen, damit man für alle Fälle den Originalstand der Datenbankinhalte hat.
Exportdatei umkodieren
Falls die Exportdatei db_export.sql
nicht die Kodierung utf8
hat, muss man den Inhalt der Datei auf utf8
umstellen.
Unter UNIX geht das mit folgendem Befehl:
iconv -f ISO-8859-1 -t UTF-8 db_export.sql
Unter Windows kann man dafür GitBash, MinGW, Cygwin, usw. benutzen, die eine Unix-ähnliche Umgebung unter Windows anbieten oder das Windows-Subsystem für Linux (WSL), falls man das in Windows installiert hat.
Alternativ kann man die Exportdatei auch mit Editoren umkodieren, z. B. mit Notepad++ über das Menü "Encoding > Convert to UTF-8".
Exportdatei anpassen
Alle CREATE TABLE
Anweisungen anpassen, also vorhandene Angaben wie CHARSET=latin1
mit CHARSET=utf8
ersetzen.
Entweder über die Kommandozeile (UNIX) mit folgendem Befehl:
sed 's/CHARSET=latin1/CHARSET=utf8/' db_export.sql > db_export_utf8.sql
Oder in einem beliebigen Editor mit Suchen und Ersetzen.
Neue Datenbank anlegen
Die vorhandene Datenbank löschen und eine neue Datenbank anlegen. Sicherstellen, dass die neue Datenbank den Zeichensatz utf8
und die Kollation utf8_general_ci
hat. Ändern kann man das wie folgt:
ALTER DATABASE datenbank_name DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
Zeichensatz der Datenbankverbindung konfigurieren
In CONTENIDO die Datei {installations_pfad}/data/config/{umgebung}/config.php
öffnen und falls nötig, die Einstellung der Datenbankverbindung auf utf8
anpassen.
$cfg['db'] = [
'connection' => [
...
'charset' => 'utf8', // (string) The charset of connection to database
...
],
...
];
Man kann die Kodierung auch in der MySQL Konfiguration (my.cnf
oder my.ini
) wie folgt setzen:
[client]
default-character-set=utf8
Allerdings überschreibt der in der CONTENIDO Konfiguration gesetzte Wert diese Einstellung. Will man das nicht, kann man in der config.php
den Wert für 'charset' leer lassen, z. B. 'charset' => ''
.