Phpbb3 – encode error converter

Hi again.

He estado probando la instalación de phpbb3, el nuevo foro basado en phpbb lanzado hace pocos meses. Como siempre, el principal escollo ha sido el cotejamiento de los caracteres. No voy a describir aquí el proceso de instalación, que para eso ya hay muchos y buenos tutoriales, por ejemplo:


Después de hacer una instalación desde 0, pasamos al capítulo de utilizar la utilidad del instalador phpbb3. Hemos de configurar algunos datos como el prefijo de las tablas donde se encuentra los datos a convertir, el password, etc. A continuación se comienza la conversión. No es especialmente lento. Después de acabar observé con desagrado que había problemas en la codificación de caracteres. Mi contexto era:

Origen
foro: phpbb 2.0.22
cotejamiento tablas: utf8_spanish_ci

después de la conversión

Destino
foro: phpbb 3
cotejamiento tablas: utf8_bin

Es decir, después del primer intento el foro quedó con las tablas con un collate tipo utf8_bin. Y como ya he dicho, tenía problemas en los caracteres. En el foro de phpbb no hay mucho soporte para los que, usamos caracteres que no utilizan los anglosajones y todo el “soporte” viene dado por los usuarios y la comunidad. En un primer momento, intenté esta solución. Se trataba de editar el fichero que realiza la conversión y cambiar una función por una variable y realizar una serie de modificaciones en las tablas. No funcionó. Pero no tengo claro si no funciono realmente, o contribuyo a encontrar la solución final del problema.

La clave definitiva la encontré en otro tópico del foro. En el phpbb 2.0.X hay un fichero llamado lang_main.php dentro de /language, si mal no recuerdo. Edité ese fichero y cambié la codificación de “ISO-8859-1” a “UTF-8”. En ese momento, el foro en producción comenzó a mostrar caracteres extraños como rombos en lugar de acentos. Después de modificar este fichero, el lang_main.php, (modificamos el archivo dentro de la carpeta del lenguaje que tengamos activado en el foro. Si es español, sería /language/spanish/lang_main.php.) iniciamos como decimos, la conversión. La cuestión es que, después de hacer esto, los caracteres se mostraban bien en el nuevo foro phpbb3.

En fin, un problema menos 😉

Actualizado: creo que no expliqué bien lo relativo al lang_main.php. Este archivo está en la estructura del foro en phpbb2. Ese es el archivo que debemos editar. De alguna manera (la cual ignoro) el converter de phpbb3 mira ese archivo y lee que valor de codificación de carácteres tiene.  Lo debemos cambiar
a UTF-8. Todo en tu foro se verá mal, eso ya me pasó a mí. Pero luego, al ejecutar el converter del phpbb3 te deja bien las eñes, acentos y demás.

19 thoughts on “Phpbb3 – encode error converter

  1. Pingback: Estadisticas Febrero 2008 | Blog de Nymphetamine

  2. This was the quickest way for replacing invalid characters after converting spanish phpBB2 -> phpBB3 forum.

    Disable your forum and log in using ssh to access your database

    1) mysqldump -u DATABASE_NAME -pPASSWORD DATABASE_NAME > dump.sql
    2) vim dump.sql
    3) :%s/CHARACTER_TO_BE_REPLACED/REPLACING_CHARACTER
    4) :w or :wq (to save & exit)
    5) mysql -u DATABASE_NAME -pPASSWORD DATABASE_NAME < dump.sql

    Another way is to log in to your mysql database and run the following commands (replace TABLE_NAME and COLUMN_NAME to match yours):

    syntax:
    update TABLE_NAME set COLUMN_NAME = replace(COLUMN_NAME,”CHARACTER_TO_BE_REPLACED”,”REPLACING_CHARACTER”);

    example for messed up spanish characters:
    update TABLE_NAME set COLUMN_NAME = replace(COLUMN_NAME,”á”,”á”);
    update TABLE_NAME set COLUMN_NAME = replace(COLUMN_NAME,”ó”,”ó”);
    update TABLE_NAME set COLUMN_NAME = replace(COLUMN_NAME,”ú”,”ú”);
    update TABLE_NAME set COLUMN_NAME = replace(COLUMN_NAME,”é¡”,”é”);
    update TABLE_NAME set COLUMN_NAME = replace(COLUMN_NAME,”ñ”,”ñ”);
    update TABLE_NAME set COLUMN_NAME = replace(COLUMN_NAME,”¿”,”¿”);
    update TABLE_NAME set COLUMN_NAME = replace(COLUMN_NAME,”Ô,”í”);

    I hope this saves your time on figuring out how to convert tables before conversion etc.

    David

  3. Hi David

    thanks by your contribution :). In fact, the collate of non english characters is a never ending story, including phpbb software. Unfortunately, more users don’t have access by ssh to server. Normaly its a share server like Goddady Hosting Plans, you know. But thank you again, interesteing solution.

    Bye.

  4. You can still use backup tool in phpBB3 that will allow you to download and save your database (if it’s not too big or have a superb internet connection) and replace those character locally then upload and restore the whole forum with clean and nice characters.BE CAREFUL with this method though as you can replace valid character. I would only use this for non-popular characters such as the above for my spanish forum. The order in this case was very important as replacing à as first would leave characters such us ¡, ³ etc. that might be difficut to replace on their own so always think twice before hitting enter and do backup as many time as you can!

  5. Gracias!!! Tenía un foro con mas de 10000 mensajes y me estaba volviendo loco este tema de los acentos para pasarlo a phpbb3.

    Gracias gracias gracias!!! 🙂

  6. Al bajar el lenguaje en español para le foro phpbb3 su estructura es completaente distinta al lenguaje de phpbb2.
    La carpeta se llama es y dentro no existe el lang_main.php, entonces habria que subir la carpeta del phpbb2 y usar esa como opcion de idioma? no chocaria un poco con la pagina de administracion?

  7. Hola Bane

    no debes subir ninguna carpeta de phpbb2.X a la versión phpbb3. Si quieres lenguaje español en tu foro de phpbb3, debes bajarte el pack de español de phpbb3 y instalarlo en tu foro (no se si estás preguntando eso :S) Lo que, ahora me acuerdo de que me dió problemas, porque algunas imágenes no se veían bien y tuve que hacer algún cambio.

    Saludos.

  8. Hola Rubén!
    A lo que Bane se refiere es que una vez descargado el pack en español para phpbb3, dicho archivo “lang_main.php” no existe en el directorio.
    Yo tengo el mismo problema. Ante la ausencia de este archivo no estoy seguro qué debo editar.
    Espero que puedan ayudarme 🙂
    Saludos!

  9. Creo que ahora entiendo la confusión. Quizá no lo expliqué del todo bien 🙂
    Ahora actualizaré el post pero lo comento ya aquí. Tenemos un foro viejo (phpbb2) A y un foro nuevo B(phpbb3). El archivo que debemos editar, es el lang_main.php del foro A. Entonces, realizar la conversión, que se inicia en el wizard del foro B.

  10. Mmm entonces tendré que descargar phpbb2, buscar el lang_main.php y editarlo. Luego pegarlo en la carpeta de phpbb3 ¿o me equivoco?
    Saludos y gracias 😉

  11. No tienes que descargar nada, porque en teoría, si estás migrando de phpbb2 a phpbb3, ya tienes ese archivo en la estructura de phphb2. A no ser que lo hayas borrado todos los ficheros del foro de phpbb2. Entiende que hablo de una migración de phpbb2 a phpbb3. No de otras situaciones. Lee el comentario anterior al tuyo, es esa situación. 2 foros (2 carpetas), el lang_main.php en la instalación de phpbb2 “antigua”.

    Saludos.

  12. Claro. Pero yo ho he migrado de phpbb2 a phpbb3, sino que he instalado el phpBB3 en limpio y por lo tanto no existe el archivo lang_main.php. 🙁
    Y lo peor es que al inentar publicar un mensaje con acentos y demás, aparece un error. Aquí un ejemplo:

    Warning: Unexpected character in input: ”’ (ASCII=39) state=1 in /home/webcindario/p/r/pruebaphp3/phpBB/includes/utf/data/utf_compatibility_decomp.php on line 2

    Parse error: syntax error, unexpected $end, expecting ‘)’ in /home/webcindario/p/r/pruebaphp3/phpBB/includes/utf/data/utf_compatibility_decomp.php on line 2

    Saludos y gracias por tu atención 🙂

  13. Rubén; Te pido una ayuda, con un grupo de amigos tenemos un foro Phbb3. Desde hace un tiempo que tenemos un problema, se accede bien al foro, uno se puede logear, pero al intentar ingresar a un subforo o al panel de control la pantalla aparece en blanco.
    Realmente ya miramos todo lo que conocemos y no encontramos la forma de solucionarlo; si tenes idea de como hacerlo te lo agradeceria mcuhisimo.
    Te paso el link del foro para que peudas ver el problema: http://www.306argentina.com.ar/foro

    Desde ya muchas gracias, Saludos Mariano

  14. Hello Everybody

    Just wanted to share my new experience.

    If your system denies to start due to an error corresponding to missing HAL.DLL, invalid Boot.ini or any other critical system boot files you can repair this by using the XP installation CD. Just boot from your XP Setup CD and enter the Recovery Console. Then launch “attrib -H -R -S” on the C:\Boot.ini file and delete it. Run “Bootcfg /Rebuild” and then Fixboot

    Cheers,
    Carl

  15. Cogiendo de base la aportación de David he hecho las sentencias SQL para corregir los caracteres incorrectos de los idiomas español y catalán después de actualizar a phpBB 3.

    Saludos,

    EDITADO POR Rubén Ortiz: como el script eran bastantes sentencias, he creado un .sql con las mismas, y subido al blog, para su fácil descarga.

    Descargar Phpbb3_reemplazar_caracteres

    Gracias a jaume de maduixa.net

Leave a Reply

Your email address will not be published. Required fields are marked *