Sven Rautenberg: Welche Datenbank auf eigenem Server für Community-Projekt verwen

Beitrag lesen

Moin!

Nein, da meine Scripte alle in UTF-8 gespeichert sind.

Siehst du, das ist genau das Problem.

Die Datenbankverbindung hat nämlich auch ein Encoding. Das ist standardmäßig aber auf ISO-8859-1 gesetzt. Und dann paßt es nämlich nicht.

Die Datenbank kriegt von deinem Skript die Bytes, die in UTF-8 z.B. einen Umlaut darstellen. Aber aufgrund der vereinbarten (oder eben nicht vereinbarten) Encoding-Definition der DB-Verbindung interpretiert die Datenbank diese Bytes so, als ob sie ISO-8859-1 sind. Ein Umlaut besteht aus zwei Bytes, das macht zwei ISO-8859-1-Zeichen, die werden von ISO nach UTF-8 gewandelt und in der DB abgespeichert. Im DB-Feld steht dann z.B. "A-Tilde Currency" - UTF-8-codiert, d.h. man kann innerhalb der Datenbank damit gar nichts anfangen als Umlaut, weil es ja kein Umlaut ist.

Das stört innerhalb deiner Verarbeitungskette skriptseitig aber nicht, denn der Rückweg läuft genauso ab: "A-Tilde Currency" wird aus der DB ausgelesen, gewandelt in ISO-8859-1, und das ergibt dann wieder genau die Bytes, die du skriptseitig als UTF-8 interpretierst, die dann einen Umlaut ergeben.

Da PHPMyAdmin aber das Umlauthandling korrekt vornimmt, siehst du natürlich den Mist, den dein Skript in die DB reingeschrieben hat, und kannst Texte darin auch nicht ordentlich bearbeiten.

Liegt aber ausschließlich an deiner mangelhaften Anbindung der Datenbank, nicht an PhpMyAdmin.

- Sven Rautenberg

--
"Love your nation - respect the others."