habe mir schon einige Threads diesbezüglich durchgelesen aber irgendwie klappt es nicht.
Ich habe von meinem alten MySQL-Server (welcher nicht mehr existiert) ein komplettes Backup mit phpmyadmin erstellt (.sql). In der .sql Datei war als default charset latin1 und als collate latin1_german1_ci angegeben.
Da bei phpmyadmin die Option "Senden" sowie Komprimierung angegeben war, ist die Datei als UTF-8 gespeichert worden (bug im phpmyadmin).
Nachdem ich dann das Backup auf meinen neuen SQL-Server eingespielt habe, hatte ich keine Umlaute auf der Webseite (in phpmyadmin wird alles korrekt dargestellt).
Habe bereits mit sämtlichen Einstellungen in phpmyadmin gespielt (Datenbank, einzelne Tabellen und auch jeweilige Reihen von latin1 auf utf8 und umgekehrt eingestellt) aber immer werden auf der Webseite die Sonderzeichen falsch dargestellt.
Habe dann meinen MySQL-Server per Konfigurationsdatei komplett auf UTF8 (utf8 sowie utf8_general_ci) eingestellt allerdings immer noch das selbe Problem.
Anschließend habe ich die Datenbank gelöscht und neu als utf8_general_ci erstellt und per Hand die sql Datei bearbeitet = sämtliche Einträge von latin1_german1_ci auf utf8_general_ci und latin1 auf utf8 geändert und die Datei mit Hilfe von TextPad auf UTF-8 umgestellt.
Die sql Datei selbst wird in UTF-8-fähigen Programmen korrekt angezeigt (Umlaute, etc.), auch das einspielen per phpmyadmin klappt problemlos sowie die Anzeige in phpmyadmin, allerdings wird immer noch die Webseite ohne korrekte Sonderzeichen dargestellt.
Noch zur Info: Da der Internet Explorer in jeder Version zu blöd ist anzuzeigen welchen Charset die Seite benutzt habe ich FireFox getestet und zumindest herausgefunden, dass die Kodierung der Webseite als UTF-8 angegeben ist, der Meta-Tag "Content-Type" allerdings das charset iso-8859-1 benutzt.
Um nun endlich zu meinen Fragen zu kommen
a) Wo kann ich in phpBB2 einstellen welcher charset benutzt werden soll? Geht das überhaupt ohne manuelle bearbeitung der Dateien?
b) Wo kann ich in phpBB2 einstellen welcher charset zur Abfrage der Datenbank genutzt werden soll? Wie DSB in seinem sehr guten Thread schrieb, ist es möglich dass die komplette Datenbank in UTF-8 gespeichert ist, auf Anfragen vom Script aber in z.B. latin1 umwandelt sodass dieses die Inhalte korrekt anzeigt. Sollte es hier keine Option geben, in welche Datei muss ich welchen Code einfügen?
Abschließend ein paar Informationen:Jetzt kommen wir zum praktischen Teil:
Seit MySQL 4.0 benutzt MySQL intern zum Speichern von Daten utf8.
Das bedeutet aber nicht, dass Programmierer jetzt zwangsläufig alle Programme auch utf8-kodieren müssen, denn MySQL kann die Daten in jedem gewünschten Zeichensatz liefern. Wir müssen dem Server nur sagen, in welchem Format wir die Daten bekommen möchten und auch in welchem Format wir Daten liefern!
Dazu können Programme nach dem Verbindungsaufbau z.B. den Befehl "SET NAMES latin1" an den MySQL-Server senden.
Dadurch "einigen" sich das Programm und der MySQL-Server darauf, dass der Datenaustausch zwischen beiden über latin1-kodierte Daten geschieht. Werden Daten von einem Programm an den MySQL-Server gesendet, nimmt MySQL die latin1-Daten entgegen, wandelt sie intern in utf8 und speichert sie korrekt.
Fragt das Script Daten ab, dann liest MySQL die Daten aus und wandelt sie vor der Rückgabe an das Script wieder in latin1 um.
Die Kommunikation klappt also perfekt, wenn sich die beiden auf einen Zeichensatz einigen, da sie so wortwörtlich die gleiche Sprache sprechen.
mysqld Ver 5.0.32-Debian_7etch1-log for pc-linux-gnu on i486 (Debian etch distribution)
PHP 5.2.4
phpBB2.0.22 (durch Updates)
Auf der Webseite werden Umlaute als ? angezeigt, d.h. ein latin1 Zeichen wird als UTF-8 interpretiert (ü = UTF-8 Zeichen als latin1 interpretiert).
Ich danke allen mit kontruktiven Vor- und Ratschlägen herzlichst im Voraus! Das Forum bestand sehr lange und dementsprechend kommt eine Neuinstallation nicht in Frage (sql. Datei ist rund 4MB groß!).