MUY IMPORTANTE, ANTES QUE NADA UNA COPIA DE SEGURIDAD DE LA BASE DE DATOS.
Esto puede funcionar para cualquier tipo de página que utilice bases de datos, desde cualquier CMS, foro, etc. Yo lo he probado con foros de Invision y PHPBB, entiendo que para otros sistemas como VBulletin, SMF o, Nuke o Joomla también será válido. Puede ser una faena algo laboriosa, pero vale la pena.
La base de este sistema es sustituir los caracteres corrompidos por los válidos utilizando código SQL. En concreto la siguiente sentencia nos será válida para todos los caractéres:
UPDATE nombre_de_tabla SET nombre_de_campo = REPLACE ( nombre_de_campo, 'carácter antiguo', 'caracter nuevo' );
Por lo tanto tendremos que investigar previamente en nuestra base de datos las tablas a modificar y el nombre de los campos donde se encuentra el texto a modificar.
A TENER EN CUENTA: No sé por qué, pero todos los caracteres corrompidos son sustituidos por la letra à y otro caracter, por ejemplo, la letra ñ (en este ejemplo que expongo) se corresponde a ñ. La í (i latina minúscula con tilde) sin embargo (en este ejemplo que expongo) se corresponde con el caracter Ã. Dado que si sustituimos la letra í nos tocará identificar de nuevo el resto de caracteres, ésta debe ser el último caracter a reemplazar.
DE TODAS FORMAS es recomendable antes de nada crear una tabla de prueba y comprobar que todo funciona perfectamente, realizar todas las pruebas y cambios pertinentes antes de proceder a realizar el reemplazo definitivo.
Pasos a seguir:
1º Utilizar un editor de texto en condiciones, yo uso el Notepad++ para Windows.
2º Hacer un listado de los caracteres a modificar. Se puede conseguir. Por ejemplo ñ corresponde a la ñ minuscula. Hay que tener en cuenta que hay que cambiar todas las letras acentuadas en mayusculas y minúsculas, las ñ's, las interrogaciones, las comillas y algun que otro simbolo como el € o el $ y la @ o #, %, &. Esto seria lo mas laborioso
3º Una vez se tengan todas las equivalencias hay que acceder a la base de datos, entrar en las tablas que se deseen modificar, en este caso serian las de posts y topics como minimo. Hay que ir a la seccion SQL y añadir el codigo siguiente, ADAPTANDOLO A LAS CONDICIONES EN CONCRETO DE CADA PÁGINA. En este caso en concreto se introdujeron estos códigos para un foro PHPBB. Ojo con lo dicho antes, la í (i latina con tilde en minúscula) siempre se reemplaza al final, cuando están todos los caracteres cambiados:
UPDATE phpbb_posts SET post_text = REPLACE(post_text, 'á', 'á');
UPDATE phpbb_posts SET post_text = REPLACE(post_text, 'é', 'é');
UPDATE phpbb_posts SET post_text = REPLACE(post_text, 'ó', 'ó');
UPDATE phpbb_posts SET post_text = REPLACE(post_text, 'ú', 'ú');
UPDATE phpbb_posts SET post_text = REPLACE(post_text, 'É', 'É');
UPDATE phpbb_posts SET post_text = REPLACE(post_text, 'Ó', 'Ó');
UPDATE phpbb_posts SET post_text = REPLACE(post_text, 'Ú', 'Ú');
UPDATE phpbb_posts SET post_text = REPLACE(post_text, 'ñ', 'ñ');
UPDATE phpbb_posts SET post_text = REPLACE(post_text, 'Ñ', 'Ñ');
UPDATE phpbb_posts SET post_text = REPLACE(post_text, '¿', '¿');
UPDATE phpbb_posts SET post_text = REPLACE(post_text, '¡', '¡');
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, 'á', 'á');
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, 'é', 'é');
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, 'ó', 'ó');
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, 'ú', 'ú');
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, 'É', 'É');
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, 'Ó', 'Ó');
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, 'Ú', 'Ú');
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, 'ñ', 'ñ');
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, 'Ñ', 'Ñ');
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, '¿', '¿');
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, '¡', '¡');
UPDATE phpbb_users SET username = REPLACE(username, 'á', 'á');
UPDATE phpbb_users SET username = REPLACE(username, 'é', 'é');
UPDATE phpbb_users SET username = REPLACE(username, 'ó', 'ó');
UPDATE phpbb_users SET username = REPLACE(username, 'ú', 'ú');
UPDATE phpbb_users SET username = REPLACE(username, 'É', 'É');
UPDATE phpbb_users SET username = REPLACE(username, 'Ó', 'Ó');
UPDATE phpbb_users SET username = REPLACE(username, 'Ú', 'Ú');
UPDATE phpbb_users SET username = REPLACE(username, 'ñ', 'ñ');
UPDATE phpbb_users SET username = REPLACE(username, 'Ñ', 'Ñ');
UPDATE phpbb_users SET username = REPLACE(username, '¿', '¿');
UPDATE phpbb_users SET username = REPLACE(username, '¡', '¡');
UPDATE phpbb_users SET username_clean = REPLACE(username_clean, 'á', 'á');
UPDATE phpbb_users SET username_clean = REPLACE(username_clean, 'é', 'é');
UPDATE phpbb_users SET username_clean = REPLACE(username_clean, 'ó', 'ó');
UPDATE phpbb_users SET username_clean = REPLACE(username_clean, 'ú', 'ú');
UPDATE phpbb_users SET username_clean = REPLACE(username_clean, 'É', 'É');
UPDATE phpbb_users SET username_clean = REPLACE(username_clean, 'Ó', 'Ó');
UPDATE phpbb_users SET username_clean = REPLACE(username_clean, 'Ú', 'Ú');
UPDATE phpbb_users SET username_clean = REPLACE(username_clean, 'ñ', 'ñ');
UPDATE phpbb_users SET username_clean = REPLACE(username_clean, 'Ñ', 'Ñ');
UPDATE phpbb_users SET username_clean = REPLACE(username_clean, '¿', '¿');
UPDATE phpbb_users SET username_clean = REPLACE(username_clean, '¡', '¡');
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, 'á', 'á');
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, 'é', 'é');
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, 'ó', 'ó');
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, 'ú', 'ú');
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, 'É', 'É');
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, 'Ó', 'Ó');
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, 'Ú', 'Ú');
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, 'ñ', 'ñ');
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, 'Ñ', 'Ñ');
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, '¿', '¿');
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, '¡', '¡');
Saludos.
Este comentario ha sido eliminado por el autor.
ResponderEliminar