Sto cercando di importare da un forum Vanilla seguendo le istruzioni pubblicate qui. Tuttavia, ottengo il seguente errore quando eseguo lo script di importazione vanilla.rb:
Caricamento dei gruppi esistenti...
Caricamento degli utenti esistenti...
Caricamento delle categorie esistenti...
Caricamento dei post esistenti...
Caricamento degli argomenti esistenti...
Analisi del file...
Lettura del file...
Traceback (most recent call last):
5: from script/import_scripts/vanilla.rb:254:in `\u003cmain\u003e'
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)
Ho provato a modificare il set di caratteri del database MySQL in UTF8 seguendo le istruzioni qui e poi riesportare il file di esportazione, ma ciò non ha risolto il problema. Qualche suggerimento?
Puoi cercare informazioni sulla codifica UTF-8 su Google. Devi fare qualcosa per convertire la tabella in UTF-8. La volta in cui l’ho fatto, ci sono state ulteriori complicazioni perché alcune righe erano in un formato e altre in un altro. Credo di aver fatto delle operazioni un po’ arbitrarie, convertendo i valori uno per uno.
Oh. È terribile. La tua migliore scommessa, basata su un vago ricordo di una volta in cui l’ho fatto più di un anno fa, è provare quante più conversioni diverse possibile finché non ne trovi una che funzioni per tutti o per la maggior parte dei dati. Credo di aver eseguito una serie di trasformazioni una per una che si sono rivelate una perdita di tempo, finché non ho scoperto una conversione che funzionava per tutti (la maggior parte?) dei dati.
Ecco cosa ho fatto. Usalo a tuo rischio e pericolo. (Era vbulletin, per la cronaca).
def char_map(raw_original)
raw = raw_original.dup
debug = false # (raw.length > 50)
# windows 1252
all = ''
win_encoded = ''
### Codifica WIN1252
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 fallito per \n\n#{raw}\n\n"
win_encoded = ''
end
### Codifica ISO 8859
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
Siamo riusciti a farlo funzionare aggiungendo un semplice comando per codificare il file come UTF-8 durante la lettura, usando qualcosa come encode\"UTF-8\" alle righe 76-80 dello script di importazione vanilla.rb.
Sto solo aspettando la conferma della sintassi esatta da parte del ragazzo che l’ha fatto tramite riga di comando. Aggiornerò questo quando l’avrò.
Ho lavorato a questo processo solo un paio di mesi fa (e non sono uno sviluppatore ) e sono riuscito a migrare con successo un forum Vanilla self-hosted a Discourse self-hosted. Una cosa che è stata fondamentale per me è stata assicurarmi, durante l’esportazione dei dati con Vanilla Porter, di selezionare “Vanilla 2” come Source Forum Type nel primo menu a discesa.
Se ricordo bene, non ho più riscontrato l’errore UTF-8 quando ho utilizzato lo script Vanilla Porter più recente e il tipo di forum “Vanilla 2”.
Se questi due suggerimenti non fanno differenza per la tua importazione, ti prego di fornire alcuni dettagli sui passaggi che hai intrapreso finora e su cosa stai vedendo esattamente. A volte ci sono lievi variazioni allo “stesso errore” che possono fare una grande differenza nella risoluzione dei problemi.
Tutto è andato bene fino a questo errore di codifica UTF-8. Alcune persone hanno risolto questo problema. Ho provato quelle soluzioni, ma non hanno funzionato per me.
Ho provato la soluzione di @Nick_Chomey sopra; cercando di imporre la codifica utf-8 durante la lettura del file txt, ma con mio grande rammarico non ha funzionato neanche.
Grazie per aver dedicato del tempo ad aiutare un altro utente.\n\nHo selezionato “Vanilla 2” in Source Forum Type.\n\nPosso usare sia dispositivi basati su Windows che su Linux e ho accesso a entrambi.