Page 1 of 1

Kodierungen der Datenbanken - Wie mach ich's richtig?

Posted: Wed Apr 22, 2009 7:05 am
by regina
Ich habe CMSMS so installiert, daß Datenbank und Konfiguration auf utf-8 steht.

Datenbank:
character_set_client  utf8
character_set_connection  utf8

Konfiguration:
$config['default_encoding'] = 'utf-8';
$config['admin_encoding'] = 'utf-8';
Klappt alles soweit wunderbar, solange ich alle Daten über die Admin-Oberfläche einpflege.
Jetzt möchte ich aber für das CompanyDirectory zahlreiche Kategorien direkt in der Datenbank anlegen und stelle fest, daß die Umlaute in der Datenbank falsch stehen, wenn ich sie hier richtig eingebe, dann stehen sie eben falsch auf der Oberfläche.
D.h. es gibt offensichtlich noch Probleme mit unterschiedliche Kodierung.

Ich habe im Dump alle CREATE TABLE Anweisungen mit DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci eingerichtet und damit die Daten wieder eingespielt.
Das Problem ist aber dadurch nicht beseitigt.

Was hätte ich anders machen müssen bei der Installation bzw. was kann ich nachträglich machen, um das Problem zu beseitigen?

Gruß, Regina

Re: Kodierungen der Datenbanken - Wie mach ich's richtig?

Posted: Tue Apr 28, 2009 5:45 pm
by Sonya
Hallo Regina,
regina wrote: Ich habe CMSMS so installiert, daß Datenbank und Konfiguration auf utf-8 steht.

Datenbank:
character_set_client  utf8
character_set_connection  utf8
die beiden Zeilen reichen nicht, um die Datenbank komplett auf UTF-8 umzustellen. Es fehlt noch:

Code: Select all

SET character_set_results = utf8;
Ansonsten, kann man in include.php Datei die Zeile:

Code: Select all

// $cmsdb->Execute('set names utf8'); // database connection with utf-8
entkommentieren.  Eine SET NAMES 'x'-Anweisung ist äquivalent zu den folgenden drei Anweisungen:

Code: Select all

SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;


regina wrote: Konfiguration:
$config['default_encoding'] = 'utf-8';
$config['admin_encoding'] = 'utf-8';
Diese beiden Zeilen haben meines Wissens nichts mit der Datenbankkodierung zu tun.
regina wrote: Ich habe im Dump alle CREATE TABLE Anweisungen mit DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci eingerichtet und damit die Daten wieder eingespielt.
Das Problem ist aber dadurch nicht beseitigt.
Wenn die Daten mit latin1-Verbindung in einer utf-8 Tabelle gespeichert wurden, dann sind die Umlaute korrupt. Du musst einen Dump erstellen, in einem Texteditor oder mit sed auf der Konsole alle Sonderzeichen durch Umlaute ersetzen und dann importieren.
regina wrote: Was hätte ich anders machen müssen bei der Installation bzw. was kann ich nachträglich machen, um das Problem zu beseitigen?
1. die oben erwähnte Zeile in include.php vor der Installation entkommentieren.
2. nach der Erstellung der Datenbank vor der Installation überprüfen, ob diese utf-8 nutzt

Gruß,
Sonya

Re: Kodierungen der Datenbanken - Wie mach ich's richtig?

Posted: Mon May 04, 2009 1:17 pm
by hibr
Hallo Regina,

im Grunde hat Sonya schon alles gepostet was wichtig ist. Ich habe aufgrund dieser Problematik - die ich auch hatte - einen Beitrag und ein How-to verfasst, dass dieses "Problem" ausführlich beschreibt und in einer Schritt-für-Schritt-Anleitung löst:

http://blog.hani-ibrahim.de/cms/cmsms/c ... utsch.html
http://blog.hani-ibrahim.de/cms/cmsms/c ... ellen.html

Gruß Hani