Problema di codifica dei caratteri nel database MyBB importato

Ciao, ho importato una serie di post e persino nomi utente da un forum MyBB che vengono visualizzati con caratteri casuali come ’ e Â.

Da quanto riesco a capire dai rapporti su comportamenti simili in WordPress, potrebbe trattarsi di un problema di codifica tra Latin1 e UTF-8?

Esiste un modo semplice per rimuoverli a posteriori?

A cosa corrispondono effettivamente questi caratteri? Non riesco a immaginare quali caratteri originali potrebbero essere stati sostituiti.

Inoltre, noto che alcuni post importati contengono molto MyCode non elaborato: esiste un modo per elaborarlo in Discourse?

Sì, è la mia ipotesi. Sto lavorando su un’importazione con problemi simili. La maggior parte riguarda cose come le virgolette tipografiche e i trattini lunghi.

È tutt’altro che semplice, ma puoi eseguire una post-elaborazione che applica un force_encoding o tenta di sostituire i caratteri uno per uno.

Qualcosa del genere:

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

Tuttavia, ti consiglio di testarlo estensivamente su un sito di staging prima di eseguirlo sui dati in produzione.

Grazie, Jay.
Esiste un modo intelligente per risolvere il problema alla radice, ovvero esportare nuovamente il database dal vecchio forum e poi reimportarlo senza problemi di caratteri e mycode?

Se non sei ancora andato in onda, in modo che ricominciare non sia un’opzione, questo è il modo migliore per farlo.

Il sito non è ancora ufficialmente online: qual è il modo migliore per gestire i problemi di caratteri e il parsing del mycode durante l’esportazione da MyBB?

Esportare tutti i dati in UTF-8, se possibile, risolverà questi problemi.

Sono tornato all’installazione originale di MyBB e ho trovato nel pannello di amministrazione/Strumenti e manutenzione/Stato del sistema un avviso

Si consiglia di non utilizzare codifiche diverse nel database. Ciò potrebbe causare comportamenti imprevisti o errori MySQL.

Le tabelle sono elencate e ho notato che la maggior parte, ma non tutte, erano in formato UTF-8. Sembrava che alcune, in particolare quelle associate ai plugin, fossero in un formato più vecchio.

Cliccando sul link ‘Converti tutto’ è apparso un messaggio che indicava la necessità di modificare /inc/config.php per supportare il completo UTF-8 a 4 byte

$config[‘database’][‘encoding’] = ‘utf8mb4’;

Dopo aver modificato config.php e riprovato la conversione, ora tutte risultano coerenti. Proverò a reimportare in Discourse e farò sapere se questo risolve i problemi con i caratteri.

Non sono ancora sicuro di come gestire l’analisi MyCode.

Non hai incluso esempi o dettagli al riguardo: a questo punto, potrebbe essere meglio aprire una nuova discussione e mantenere questa focalizzata sul seguito relativo alla codifica dei caratteri.

Ciao, un nuovo thread con un esempio è qui