Hallo, ich habe eine Menge Beiträge und sogar Benutzernamen von einem MyBB-Forum importiert, die zufällige Zeichen wie ’ und  anzeigen.
Nachdem ich Berichte über ähnliches Verhalten in WordPress gelesen habe, könnte dies ein Problem mit der Kodierung von Latin1 gegenüber UTF-8 sein?
Gibt es eine einfache Möglichkeit, diese im Nachhinein zu entfernen?
Was bedeuten diese Zeichen eigentlich? – Mir fällt nicht ein, welche ursprünglichen Zeichen sie ersetzt haben könnten.
Außerdem sehe ich, dass einige importierte Beiträge eine Menge nicht geparster MyCode enthalten. Gibt es eine Möglichkeit, dies in Discourse zu parsen?
Ja, das ist meine Vermutung. Ich arbeite derzeit an einem Import mit ähnlichen Problemen. Die meisten davon betreffen Dinge wie geschweifte Anführungszeichen und Gedankenstriche.
Es ist alles andere als einfach, aber du kannst eine Nachverarbeitung durchführen, die entweder eine force_encoding durchführt oder versucht, die Zeichen einzeln zu ersetzen.
Etwas in der Art:
Post.all.each do |post|
post.raw = post.raw.force_encoding('utf-8').encode("Windows-1252").force_encoding('utf-8')
post.save!
post.rebake!
end
Aber ich würde es auf einer Testumgebung (Staging-Site) ausgiebig testen, bevor du es auf deinen Live-Daten ausführst.
Danke, Jay.
Gibt es einen cleveren Weg, das Problem an der Quelle zu lösen – also die Datenbank aus dem alten Forum neu zu exportieren und dann ohne Zeichen- und MyCode-Probleme wieder zu importieren?
Ich bin zur ursprünglichen MyBB-Installation zurückgekehrt und habe im Admin-Control-Panel unter „Tools und Wartung“ → „Systemzustand“ eine Warnung gefunden:
Es wird empfohlen, keine unterschiedlichen Kodierungen in Ihrer Datenbank zu verwenden. Dies kann zu unerwartetem Verhalten oder MySQL-Fehlern führen.
Die Tabellen wurden aufgelistet, und ich konnte sehen, dass die meisten, aber nicht alle, im UTF-8-Format vorlagen. Es sah so aus, als wären einige, insbesondere solche, die mit Plugins verbunden sind, in einem älteren Format.
Beim Klicken auf den Link „Alle konvertieren“ erschien die Meldung, dass die Datei /inc/config.php bearbeitet werden muss, um die vollständige 4-Byte-UTF-8-Unterstützung zu ermöglichen:
$config[‘database’][‘encoding’] = ‘utf8mb4’;
Nachdem ich die config.php bearbeitet und den Konvertierungsvorgang erneut versucht hatte, waren nun alle Einträge übereinstimmend. Ich werde versuchen, die Daten erneut nach Discourse zu importieren und berichten, ob dies die Zeichenprobleme behebt.
Ich bin mir jedoch immer noch nicht sicher, wie ich mit der MyCode-Parsing-Funktion umgehen soll?
Du hast keine Beispiele oder Details dazu eingefügt – an dieser Stelle wäre es am besten, einen neuen Thread zu eröffnen und diesen hier auf das Follow-up zur Zeichencodierung zu konzentrieren.