Ich versuche, Daten aus einem Vanilla-Forum gemäß den Anweisungen hier zu importieren. Beim Ausführen des Import-Skripts vanilla.rb erhalte ich jedoch folgenden Fehler:
Loading existing groups...
Loading existing users...
Loading existing categories...
Loading existing posts...
Loading existing topics...
parsing file...
reading file...
Traceback (most recent call last):
5: from script/import_scripts/vanilla.rb:254:in `<main>'
4: from /var/www/discourse/script/import_scripts/base.rb:47:in `perform'
3: from script/import_scripts/vanilla.rb:17:in `execute'
2: from script/import_scripts/vanilla.rb:37:in `parse_file'
1: from script/import_scripts/vanilla.rb:72:in `read_file'
script/import_scripts/vanilla.rb:72:in `gsub': invalid byte sequence in UTF-8 (ArgumentError)
Ich habe versucht, den Zeichensatz der MySQL-Datenbank gemäß den Anweisungen hier auf UTF8 umzustellen und die Exportdatei erneut zu exportieren, aber das Problem besteht weiterhin. Haben Sie einen Vorschlag?
Du kannst einfach nach Informationen zur UTF-8-Kodierung googeln. Du musst etwas tun, um die Tabelle in UTF-8 zu konvertieren. Als ich das gemacht habe, gab es zusätzliche Komplikationen, weil einige Zeilen in einem Format und andere in einem anderen Format vorlagen. Ich glaube, ich habe etwas Unsinniges gemacht, indem ich die Konvertierung werteweise durchgeführt habe.
Oh. Das ist schrecklich. Deine beste Chance, basierend auf einer vagen Erinnerung an ein einziges Mal, als ich das vor über einem Jahr gemacht habe, besteht darin, mit so vielen verschiedenen Konvertierungen herumzuspielen, bis du endlich eine findest, die für alle oder die meisten Daten funktioniert. Ich glaube, ich habe eine Menge Einzeltransformationen durchgeführt, die sich als Zeitverschwendung herausstellten, bis ich auf eine Konvertierung stieß, die für alle (die meisten?) Daten funktionierte.
Hier ist, was ich getan habe. Auf eigene Gefahr verwenden. (Das war vBulletin, falls es von Interesse ist).
def char_map(raw_original)
raw = raw_original.dup
debug = false # (raw.length > 50)
# Windows 1252
all = ''
win_encoded = ''
### WIN1252-Kodierung
win_encoded = ''
begin
win_encoded = raw.force_encoding('utf-8').encode("Windows-1252",
invalid: :replace, undef: :replace, replace: ""
).force_encoding('utf-8').scrub
rescue => e
puts "\n#{'-'*50}\nWin1252 fehlgeschlagen für \n\n#{raw}\n\n"
win_encoded = ''
end
### ISO 8859-Kodierung
iso_encoded = ''
if all.length == 0 && win_encoded.length > 0 && win_encoded != raw
all = (debug ? "Win1252--" : '') + win_encoded
else
all = raw
end
all = old_char_map(all)
all
end
Wir haben dies zum Laufen gebracht, indem wir einen einfachen Befehl hinzugefügt haben, um die Datei beim Lesen als UTF-8 zu kodieren, z. B. encode\"UTF-8\" in den Zeilen 76-80 des vanilla.rb-Importskripts.
Ich warte noch auf die Bestätigung der genauen Syntax von demjenigen, der es über die Befehlszeile gemacht hat. Ich werde dies aktualisieren, sobald ich sie habe.
Ich habe diesen Prozess vor ein paar Monaten durchlaufen (und ich bin kein Entwickler ) und habe es geschafft, ein selbst gehostetes Vanilla-Forum erfolgreich zu einem selbst gehosteten Discourse zu migrieren. Ein wichtiger Punkt für mich war, sicherzustellen, dass ich bei der Datenexportierung mit Vanilla Porter im ersten Dropdown-Menü „Vanilla 2“ als Source Forum Type auswähle.
Wenn ich mich richtig erinnere, ist mir der UTF-8-Fehler bei der Verwendung des neueren Vanilla Porter-Skripts und des „Vanilla 2“-Forumtyps nicht wieder aufgetreten.
Wenn diese beiden Vorschläge bei Ihrem Import keinen Unterschied machen, geben Sie bitte einige Details zu den bisher unternommenen Schritten und genau das an, was Sie sehen. Manchmal gibt es geringfügige Abweichungen zum „gleichen Fehler“, die bei der Fehlerbehebung einen großen Unterschied machen können.
Alles lief gut, bis zu diesem UTF-8-Kodierungsfehler. Einige Leute haben dieses Problem gelöst. Ich habe diese versucht, aber es hat bei mir nicht funktioniert.
Ich habe @Nick_Chomey 's Lösung oben versucht; versucht, die UTF-8-Kodierung beim Lesen der TXT-Datei zu erzwingen, aber zu meiner Verzweiflung hat es auch nicht funktioniert.
Könnten Sie uns bitte mitteilen, welche Art von Computer Sie verwenden? Die Anweisungen zur Konvertierung Ihrer Datei in die UTF-8-Kodierung variieren.