Altri messaggi con charset non UTF-8, ad esempio iso-8859-1, vengono importati correttamente.
Prima di cercare di individuare la causa del problema esplorando il codice partendo da script/import_scripts/mbox/support/indexer.rb, qualcuno ha un’idea? Potrebbe essere un problema ambientale e non nel codice? Accade anche quando un utente che opera in modalità mailing list invia una risposta con questa codifica?
Ho fatto un test rapido e Email::Receiver sembra funzionare correttamente. Converte l’input in UTF-8. Non riesco a pensare a un motivo per cui la codifica dovrebbe essere errata in seguito.
[1] pry(main) > raw_email = File.read("/tmp/windows.txt");
[2] pry(main) > receiver = Email::Receiver.new(raw_email, convert_plaintext: true, skip_trimming: false);
[3] pry(main) > body = receiver.select_body;
[4] pry(main) > receiver.mail.charset
=> "windows-1252"
[5] pry(main) > body.first.encoding
=> #<Encoding:UTF-8>
[6] pry(main) > puts body.first;
cette réflexion me fait penser : y-a-il une obligation/raison (en dehors du coup de maintenannce) à avoir un même outil pour les 2 fonctionnalités (interactions vs galerie) ?
Grazie per il test veloce: non saprei come farlo da solo Potrebbe essere che manchi qualcosa nel container di importazione? Mi farebbe molto piacere riprodurre ciò che hai fatto ed esplorare da lì. Se non trovo nulla, fornirò le istruzioni per riprodurre il problema utilizzando la procedura di importazione mbox con una casella di posta contenente solo questa singola email.
Otengo gli stessi risultati che hai ottenuto tu, quindi il problema non è lì. Eseguirò un’importazione con questa sola email e una nuova categoria per verificare che non si tratti di un qualche effetto collaterale.
copiato windows.txt in shared/standalone/import/data/windows4/windows.mbox
eseguito ./launcher enter import
avviata l’importazione con
root@forum:/var/www/discourse# import_mbox.sh
L'importazione del mbox sta iniziando...
Caricamento dei gruppi esistenti...
Caricamento degli utenti esistenti...
Caricamento delle categorie esistenti...
Caricamento dei post esistenti...
Caricamento degli argomenti esistenti...
Creazione dell'indice
Indicizzazione dei file in /shared/import/data/windows4
Indicizzazione di /shared/import/data/windows4/windows.mbox
Indicizzazione delle risposte e degli utenti
Creazione delle categorie
1 / 1 (100.0%) [8121278 elementi/min]
Creazione degli utenti
Saltati 1 utenti già importati
Creazione degli argomenti e dei post
1 / 1 (100.0%) [219 elementi/min]
Aggiornamento dello stato degli argomenti
Aggiornamento di bumped_at sugli argomenti
Aggiornamento di last posted at sugli utenti
Aggiornamento di last seen at sugli utenti
Aggiornamento di first_post_created_at...
Aggiornamento del conteggio dei post per utente...
Aggiornamento del conteggio degli argomenti per utente...
Aggiornamento degli utenti degli argomenti
Aggiornamento dei tempi dei post
Aggiornamento degli utenti degli argomenti in evidenza
Aggiornamento degli argomenti in evidenza nelle categorie
9 / 9 (100.0%) [1562 elementi/min] ]
Reimpostazione dei contatori degli argomenti
Completato (00h 00min 09sec)
Ho ottenuto lo stesso risultato di prima, che puoi vedere qui.
Oppure la differenza risiede nel modo in cui il messaggio viene estratto dal file mbox: è qui che il percorso del codice cambia. L’istruzione raw_email = File.read("/tmp/windows.mbox") mostrata sopra è diversa dal dividere il file con espressioni regolari, e forse è proprio qui che si verificano gli errori.
E in effetti, aggiungendo File.open('/tmp/message.txt', 'w') { |file| file.write(receiver.raw_email) } dopo questa riga si ottiene il seguente file, che è diverso dal file originale.
Dopo aver individuato dove avviene la trasformazione indesiderata, sembra che sia qui:
line.scrub è responsabile della trasformazione del contenuto in qualcosa di diverso dall’originale. Se rimosso, l’espressione regolare fallisce con:
...
1: from /var/www/discourse/script/import_scripts/mbox/support/indexer.rb:174:in `block in each_mail'
/var/www/discourse/script/import_scripts/mbox/support/indexer.rb:174:in `=~': invalid byte sequence in UTF-8 (ArgumentError)
Perché non è affatto UTF-8, in effetti
Hai qualche idea su come risolvere questo problema? Forse un primo passaggio sui soli intestazioni delle email per cercare il charset? Sembra esserci qui un problema e .