Problema de codificación de caracteres en base de datos MyBB importada

Hola, tengo una serie de publicaciones e incluso nombres de usuario importados de un foro MyBB que están mostrando caracteres aleatorios como ’ y Â.

Por lo que puedo deducir de informes de comportamientos similares en WordPress, ¿esto podría ser un problema de codificación entre Latin1 y UTF-8?

¿Existe una forma sencilla de eliminarlos después de la importación?

¿A qué caracteres originales corresponden realmente estos símbolos? No puedo imaginar qué caracteres originales podrían haber sido sustituidos por ellos.

Además, veo que algunas publicaciones importadas contienen una gran cantidad de MyCode no procesado; ¿existe alguna forma de que esto se procese en Discourse?

Sí, esa es mi hipótesis. Estoy trabajando ahora con una importación que presenta problemas similares. La mayoría se deben a cosas como comillas tipográficas y guiones largos.

Está lejos de ser sencillo, pero puedes realizar un posprocesamiento que aplique force_encoding o que intente reemplazar los caracteres uno por uno.

Algo así:

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

Sin embargo, te recomendaría probarlo extensamente en un entorno de staging antes de ejecutarlo sobre tus datos en producción.

Gracias, Jay.
¿Hay alguna forma inteligente de abordar el problema en su origen, es decir, volver a exportar la base de datos del foro antiguo y luego volver a importarla libre de problemas con caracteres y códigos de formato (mycode)?

Si aún no has ido en vivo, de modo que empezar de nuevo no sea una opción, esa es la mejor manera de hacerlo.

El sitio no está oficialmente en línea, pero ¿cuál es la mejor manera de manejar problemas de caracteres y el análisis de mycode al exportar desde MyBB?

Exportar todos los datos en UTF-8, si es posible, resolverá esos problemas.

Volví a la instalación original de MyBB y encontré una advertencia en el panel de administración/Herramientas y mantenimiento/Salud del sistema:

Se recomienda no usar diferentes codificaciones en tu base de datos. Esto podría causar comportamientos inesperados o errores de MySQL.

Se listan las tablas y pude ver que la mayoría, pero no todas, estaban en formato UTF-8. Parecía que algunas, especialmente las asociadas con complementos, estaban en un formato más antiguo.

Al hacer clic en el enlace ‘Convertir todo’, apareció una respuesta indicando que era necesario editar /inc/config.php para admitir UTF-8 completo de 4 bytes:

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

Después de editar config.php e intentar la conversión nuevamente, ahora todas muestran que coinciden. Intentaré volver a importar a Discourse y informaré si esto ayuda con los problemas de caracteres.

Aún no estoy seguro de cómo abordar el análisis de MyCode.

No has incluido ningún ejemplo ni detalles al respecto. En este punto, lo mejor sería iniciar un nuevo hilo y mantener este centrado en el seguimiento de la codificación de caracteres.

Hola, un nuevo hilo con un ejemplo está aquí