Category: Aufreger

Umlaute und MySQL

Von Boris, Fr, 1. Jan 2010 21:04

Still und heimlich hat dreisechzig.net im Sommer sein fünfjähriges Jubliläum gefeiert. Das hat hier jetzt eigentlich gar nichts zu suchen, außer daß dieses Blog “Opfer” einer Umstellung der internen Verwaltung von Character-Encodings bei WordPress wurde. Kurzum hat WordPress seit einigen Versionen “gemogelt” um die Umlaute weiterhin halbwegs korrekt im Browser zu zeigen (aber als Nebeneffekt waren RSS-Feeds so kaputt, daß Umlaute in Itunes beim Podcast falsch angezeigt wurden).

Jetzt wollte ich auf WordPress 2.9 upgraden, was allerdings auch einen Umzug auf MySQL5 bedeutet. Und das wiederum ist bei einem Shared Hoster (dreisechzig.net liegt auf 1&1 Servern) gar nicht mal so einfach. Statt die Datenbank “upzugraden” muß man sie exportieren, eine neue MySQL5 Datenbank anlegen und dort dann die Daten “importieren” (was kein Import sondern eine Folge von Kommandos ist, die die Datenbank neu anlegen). Natürlich kann man einen 20 MByte-Export nicht komplett importieren.

Noch viel schlimmer ist aber, daß die Character Encodings dabei völlig zerhauen werden, insbesondere wenn, wie bei mir, die Quelldaten schon halber Matsch sind mit dem sich WordPress nur so durchgewurstelt hat. Also habe ich geschlagene neun Stunden heute damit verbracht, die Daten zu exportieren, in diversen Text-Editoren die Umlaute zu retten, und dann Stück für Stück wieder zu importieren.

Und geklappt hat es nicht – alle Einträge ab 15. August rückwärts haben immer noch keine korrekten Umlaute und ich krieg ums Verrecken nicht raus, warum. Wahrscheinlich habe ich einen Teil der Dateien nicht mit dem korrekten Encoding gespeichert.

Unter anderem mußte ich nämlich händisch, ja händisch, alle war’s, You’re, isn’t und sei’s (und noch mehr) finden weil ein ‘ (wie es oft in den Texten zu finden war) das Ende des Strings bedeutet und damit natürlich das entsprechende SQL-Kommando invalide macht. Nein, man kann das nicht automatisieren (denn es gibt auch einige Verwendungen von ‘ mit einem Leerzeichen dahinter, die man nicht mit Regular Expressions abfangen kann).

Und weil das alles händisch war kann ich jetzt NICHT nochmal von vorne anfangen weil ich sonst nämlich waaaaaahnsinnig werde.

Sachdienliche Hinweise, wie ich SQL “REPLACE INTO ” Kommandos so umbaue, daß ich existierende Werte überschreiben kann, sind gerne gesehen – dann kann ich in meine händisch edierten SQL-Kommando-Dateien rein, nochmal das Encoding ändern und die Daten in der Datenbank ändern.

Ich beruhige jetzt meine Nerven mit Teil Zwei des privaten Jeff-Goldblum-Filmfestivals. Gestern gab es “Into the Night” heute ist “The Tall Guy” dran. Ob ich allerdings morgen “Earth Girls are Easy” durchstehe, weiß ich nicht.

Panorama Theme by Themocracy