Sitios web

El juego de caracteres en un backup de una base de datos

Si tenemos que hacer un backup de una base de datos MySQL, recomiendo leer Cómo efectuar una copia y restauración de una base de datos con SSH para hacerlo. Si entramos en la base con nuestro gestor, generalmente phpMyAdmin, y observamos los caracteres de los registros de una determinada tabla vemos que contienen vocales acentuadas, eñes o signos de interrogación. Si hacemos un backup y posteriormente un restore en otra base, comprobaremos que los caracteres típicos de nuestro idioma se han convertido en símbolos indescifrables, y así aparecerán en las páginas de nuestro sitio. Algo extraño ha ocurrido. ¿Qué ha pasado?

Los textos han llegado originalmente a la base de datos desde un formulario en una página web. Esta página soporta el código de caracteres iso-8859-1, o lo que es lo mismo latin1. Al hacer el backup, el sistema MySQL utiliza el juego de caracteres UTF-8 (no siempre ocurre así). Parte del resultado observado en el archivo SQL que se obtiene del backup puede ser muy parecido al que mostramos a continuación:

INSERT INTO `jos_components` (`id`, `name`, `link`, `menuid`, `parent`, `admin_menu_link`, `admin_menu_alt`, `option`, `ordering`, `admin_menu_img`, `iscore`, `params`) VALUES 

(1, 'Banners', '', 0, 0, '', 'Gestión de banners', 'com_banners', 0,  'js/ThemeOffice/component.png', 0, ''),

(2, 'Banners', '', 0, 1, 'option=com_banners', 'Banners activos', 'com_banners', 1, 'js/ThemeOffice /edit.png', 0, ''),

(3, 'Clientes', '', 0, 1, 'option=com_banners&task=listclients', 'Administrar clientes', 'com_banners', 2,  'js/ThemeOffice/categories.png', 0, ''),

(4, 'Enlaces Web',  'option=com_weblinks', 0, 0, '', 'Administrar enlaces web', 'com_weblinks', 0, 'js/ThemeOffice/globe2.png', 0, ''),

(5, 'Enlaces Web', '', 0, 4, 'option=com_weblinks', 'Ver enlaces web', 'com_weblinks', 1, 'js/ThemeOffice/edit.png', 0, ''),

(6, 'CategorÃas', '', 0, 4, 'option=categories&section=com_weblinks', 'Administrar categorÃas de enlaces', '', 2,  'js/ThemeOffice/categories.png', 0, ''),

(7, 'Contactos',  'option=com_contact', 0, 0, '', 'Editar detalles de contacto', 'com_contact', 0, 'js/ThemeOffice/user.png', 1, ''),

(8, 'Gestión de Contactos', '', 0, 7, 'option=com_contact','Editar detalles de contacto', 'com_contact', 0, 'js/ThemeOffice/edit.png', 1, ''), ...

Al hacer la restauración, en la nuevas tablas se verán los caracteres tal como aparecen en el archivo SQL. Para evitarlo hay que, antes de nada, abrir el archivo SQL y añadir en la parte superior la instrucción siguiente: SET NAMES utf8;

Veremos ahora que los caracteres especiales aparecen en los registros de las tablas tal como estaban en la base de datos original.

Fabriciano González

Amante de la informática y de Internet entre otras muchas pasiones. Leo, descifro, interpreto, combino y escribo. Lo hago para seguir viviendo y disfrutando. Trato de dominar el tiempo para que no me esclavice.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.