Hi!
Jedenfalls werden die Umlaute in der .sql Datei, wenn ich sie mit TotalCommander per FTP abrufe nicht richtig dargestellt (z.B. für den) wenn auch die BLOB-Tabelle gesichert wird. Sind es nur die 19 anderen klappt alles.
Beschäftige dich grundlegend mit dem Thema Zeichenkodierung. Das läuft nicht auf magische Weise von selbst. Der Sender muss dem Empfänger angeben, in welcher Kodierung er sendet. Wenn der Empfänger das nicht erfährt und seine Default-Einstellung falsch ist, kommt es zu Dekodierungsfehlern. Es ist jedoch nicht in jedem Fall vorgesehen, die Kodierung zur Datei zu speichern. Im Dateisystem geht diese Information verloren. Da kommt es darauf an, dass das öffnende Programm richtig rät oder gesagt bekommt, wie es die Datei zu interpretieren hat.
In dem Fall sieht es so aus, als ob der TC davon ausgeht, er bekäme ISO-8859-1 (oder Windows-1252), tatsächlich ist es aber UTF-8. Dem mysqldump kann man einen Parameter mitgeben, der die gewünschte Zeichenkodierung angibt. Was anderes als UTF-8 führt jedoch eventuell zu Datenverlust, wenn Zeichen außerhalb der Möglichkeiten der gewünschten Kodierung vorhanden sind.
Bei der Bildschirmausgabe nach dem dump (per readfile()) sieht auch alles OK aus.
Hier wird es wohl, genauer betrachtet, so sein, dass PHP eine Ausgabe an einen Browser schickt, oder? Entweder hat der Browser zufällig richtig geraten oder er hat gesagt bekommen, welche Kodierung vorliegt.
Nachdem ich überall geschaut habe, dass es die gleiche Zeichenkodierung ist,
Definiere "überall".
[...] habe einfach mal den dump ausprobiert. Es klappt. Sowohl die Umlaute als auch die gespeicherten PDFs funktionieren nach dem Restore noch. Auch wenn ich den Dump erst per FTP runterlade und ihn dann wieder hochlade.
Wenn du keine Umkodierung vornimmst und auch weder beim Dump noch beim Einspielen eine explizite Kodierungsangabe angegeben hast, wird der Server seinen Default für beide Vorgänge nehmen, und alles wird gut.
Ich denke also das sollte sowei passen, auch wenn es halt am Computer im Editor komisch aussieht. Wie seht ihr das - könnte ich da irgendwo Probleme bekommen, oder passt das?
Sag dem Editor, welche Kodierung vorliegt.
Wenn ich mit phpMyAdmin einen Dump mache, (Ich lasse ihn immer im Textfeld anzeigen und kopiere das dann in eine UTF8-Datei) sieht das ganze durch die Zeilenumbrüche sehr aufgeräumt aus und man könnte sich zur Not auch in dem Dump zurechtfinden.
Kann ich das mit mysqldump auch irgendwie hinbekommen?
Alles was du mit mysqldump hinbekommen kannst, steht in seiner Dokumentation. Hast du da mal nachgeschaut?
Das Ganze soll ein Cronjob werden und muss daher selbstständig funktionieren. Ich möchte daher für jeden Fehler den es geben kann eine entpsrechende Lösung oder Mail-Benachrichtigung einbauen. Deshalb wollte ich über
if (system(mysqldump...))
abfragen, ob der dump geklappt hat. Leider kommt aber anscheinend immer FALSE heraus, obwohl die DB soweit ich erkennen konnte vollständig gesichert wurde.
Kommt sicher false raus oder ist nur die letzte Zeile der Ausgabe eine Leerzeile, die auch als false erkannt wird? Ein typsicherer Vergleich mit === oder !== räumt Zweideutigkeiten aus dem Weg.
Lo!