1000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!
Resolver problemas de codificación de páginas
Esta guía es para usted si está experimentando problemas de codificación de páginas y caracteres extraños que aparecen en sus páginas.
Codificación universal
Si está teniendo problemas de codificación de páginas, es importante verificar que la codificación de su página esté definida como UTF-8. UTF-8 es una codificación universal que admite la mayoría de los caracteres utilizados en el mundo. Es posible que algunos archivos contengan caracteres que no son compatibles con la codificación UTF-8. En ese caso, debe convertirlos a UTF-8 utilizando un editor de texto adecuado.
Si la codificación HTML de la página está, por ejemplo, en UTF-8 mientras que la base de datos está en latin-1, es posible que los acentos no se interpreten correctamente por MySQL. Si las páginas contienen caracteres especiales (árabes, chinos, acentos), es posible que se muestren correctamente en su sitio web pero no en phpMyAdmin, o viceversa...
Utilice un editor de texto que pueda guardar sus archivos en UTF-8. Si importa archivos de texto con código SQL dentro, debe editarlos con un software que guarde en UTF-8.
UTF-8 en PHP
Para forzar los encabezados del sitio en UTF-8 utilizando PHP, puede utilizar la función header()
con el parámetro Content-Type
. Aquí hay un ejemplo de código que permite forzar la codificación de caracteres en UTF-8:
<?php
header('Content-Type: text/html; charset=utf-8');
?>
UTF-8 a través de .htaccess
Para forzar la codificación de caracteres en UTF-8 a través del archivo .htaccess de su sitio, para contenido HTML agregue lo siguiente:
AddDefaultCharset utf-8
Header set Content-Type "text/html; charset=utf-8"
y para contenido PHP agregue:
php_value default_charset UTF-8
php_value mbstring.internal_encoding UTF-8
UTF-8 en HTML
Para especificar la codificación de caracteres en UTF-8 en el código HTML, puede usar la etiqueta meta charset
:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Título de la página</title>
</head>
<body>
<!-- Contenido de la página -->
</body>
</html>
Asegúrese también de que todos los archivos utilizados en su sitio web, como los archivos CSS y los scripts JavaScript, también estén codificados en UTF-8. Esto garantiza que todos los caracteres en su sitio web se mostrarán correctamente.
UTF-8 en la base de datos
Para (re)declarar la codificación de bases de datos y tablas en UTF-8 en phpMyAdmin, puede seguir estos pasos:
- Inicie sesión en su panel de control de phpMyAdmin
- Haga clic en la pestaña "Operaciones" en la parte superior
- En la sección "Opciones de la tabla", busque la línea "Colación" y haga clic en el botón desplegable
- Seleccione una opción de colación que utilice la codificación UTF-8, por ejemplo,
utf8_general_ci
- Haga clic en el botón "Ejecutar" en la parte inferior de la página para guardar los cambios
Agregue la función PHP mysql_set_charset a la conexión creada por mysql_connect para determinar la codificación de esa conexión (si no la especifica, el valor predeterminado de este parámetro puede variar de un servidor a otro):
$connection = mysql_connect($server, $username, $password);
mysql_set_charset('utf8', $connection);
También puede cambiar esta configuración predeterminada en todo su alojamiento siguiendo esta documentación.
Una vez que se haya establecido la conexión MySQL desde un script PHP, también puede especificar el tipo de juego de caracteres UTF8 con estos comandos:
mysql_query("SET NAMES 'utf8';");
mysql_query("SET CHARACTER SET 'utf8';");
Acentos / caracteres especiales
Si recupera una copia de seguridad de MySQL (backup) y la importa en su base de datos, es posible que todos los acentos se reemplacen por caracteres extraños (como "?").
Las copias de seguridad de las bases de datos MySQL se realizan en formato UTF8. Los caracteres acentuados están codificados en dos bytes. La importación de estas copias de seguridad no presenta problemas en los servidores, pero usted debe adaptar su configuración local para importar bases de datos en UTF8 en su computadora.
Por ejemplo, puede hacer una conversión utf8 -> latin1 del archivo SQL antes de importarlo.
De lo contrario, al importar la base de datos, simplemente especifique que su archivo de entrada está en formato iso-latin1 (sección de importación, "Juego de caracteres del archivo") y la importación se realizará correctamente.
Cuando los caracteres especiales se convierten en '?', es probable que el archivo que está importando esté en un formato no UTF-8 y que el software esté configurado para importar un archivo UTF-8. Linux puede realizar la conversión a UTF-8 con el comando 'iconv'.