Sim. Essa é a minha suposição. Estou trabalhando agora com uma importação com problemas semelhantes. A maioria deles envolve coisas como aspas curvas e travessões longos.
Está longe de ser fácil, mas é possível fazer algum processamento posterior que aplique um force_encoding ou tente substituir os caracteres um por um.
Algo como:
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
Mas recomendo testar extensivamente em um ambiente de staging antes de executar isso nos seus dados em produção.
Existe alguma maneira inteligente de resolver o problema na origem — ou seja, reexportar o banco de dados do fórum antigo e depois reimportá-lo livre de problemas com caracteres e mycode?
Voltei à instalação original do MyBB e encontrei, no painel de administração/Ferramentas e Manutenção/Saúde do Sistema, um aviso:
Recomenda-se não usar codificações diferentes no seu banco de dados. Isso pode causar comportamentos inesperados ou erros do MySQL.
As tabelas são listadas, e pude ver que a maioria, mas não todas, estavam no formato UTF-8. Parecia que algumas, particularmente associadas a plugins, estavam em um formato mais antigo.
Clicar no link ‘Converter tudo’ exibiu a resposta de que o arquivo /inc/config.php precisava ser editado para suportar o UTF-8 completo de 4 bytes:
$config[‘database’][‘encoding’] = ‘utf8mb4’;
Após editar o config.php e tentar a conversão novamente, agora todas aparecem como compatíveis. Vou tentar reimportar para o Discourse e retornarei com um relato se isso ajudar com os problemas de caracteres.
Ainda não tenho certeza sobre como lidar com a análise do MyCode.
Você não incluiu nenhum exemplo ou detalhe sobre isso — neste momento, pode ser melhor abrir um novo tópico e manter este focado no acompanhamento sobre a codificação de caracteres.