MySQL UTF-8 PHP

UTF-8 entre PHP y MySQL: conexión, columnas y salida

Localiza dónde se altera un texto con acentos y configura utf8mb4 en la conexión PDO.

Tipo: Guía práctica Lectura: 4 min Actualizado: 2026-11-03
Ejemplo visual para MySQL UTF-8 en PHP: conexión, consultas y acentos correctos

Guía y comprobaciones

Revisa toda la cadena

Ver España no demuestra que la base de datos sea el origen del problema. El texto puede estar ya alterado antes de insertarse o interpretarse mal al mostrarse. Anota el valor original, el almacenado y el que entrega la respuesta, sin registrar datos personales reales.

En MySQL, utiliza un juego de caracteres que cubra el texto que necesitas. utf8mb4 permite caracteres de cuatro bytes; no asumas que toda referencia histórica a utf8 significa lo mismo.

La conexión PDO

La selección del juego de caracteres forma parte de la conexión. Este fragmento necesita un servidor y credenciales propios; no incluye una contraseña de ejemplo que debas reutilizar.

$pdo = new PDO(
    'mysql:host=localhost;dbname=ejercicios;charset=utf8mb4',
    getenv('DB_USER'),
    getenv('DB_PASSWORD'),
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
$consulta = $pdo->prepare('SELECT nombre FROM personas WHERE id = :id');
$consulta->execute(['id' => 7]);

El DSN no transforma por sí solo columnas existentes ni repara valores ya dañados. Antes de cambiar una tabla, conserva una copia y confirma su juego de caracteres y colación. La colación afecta a ordenación e igualdad; no es simplemente una etiqueta decorativa para los acentos.

No conviertas dos veces

Aplicar funciones de conversión a cualquier texto puede producir una segunda corrupción. Si ya tienes UTF-8 válido, mantén esa codificación hasta la respuesta. Una página HTML debe declarar su codificación y escapar los valores que inserta; una API debe emitir JSON válido con su tipo de contenido correspondiente.

Para una prueba pequeña, utiliza España, pingüino, € y 😀. Comprueba la ida y vuelta completa con una fila de ejercicios y una consulta parametrizada. Si sólo falla el emoji, revisa especialmente la capacidad del campo y la conexión. Si los bytes guardados ya representan texto alterado, investiga el punto de entrada antes de hacer una sustitución masiva de datos.

Una reparación es una operación aparte

No ejecutes una conversión global de producción basándote sólo en cómo se ve un navegador. Dos filas pueden tener historiales distintos. Identifica el patrón, ensaya sobre una copia y compara antes y después; el ejemplo de conexión no autoriza una migración de datos.

Preguntas frecuentes

¿charset=utf8mb4 cambia automáticamente las columnas?

No. Configura la comunicación de esa conexión; la estructura y el contenido existentes requieren una revisión separada.

¿Debo usar una conversión en cada echo?

No. Mantén una codificación coherente y escapa según el contexto de salida; convertir reiteradamente puede alterar datos válidos.

Documentación oficial

Fuentes consultadas

Fuentes y referencias

Consulta referencias útiles para ampliar o contrastar esta guía.

R

Autora de la guia

Redacción de Línea de Código

Publicación independiente de programación y trámites digitales

Guías con ejemplos y referencias oficiales para aprender programación y preparar gestiones digitales. Las solicitudes se completan en el organismo responsable.

Actualizado: 2026-11-03 Politica editorial Correcciones

Por que confiar

Contrastamos fuentes oficiales, actualizamos piezas clave y priorizamos estructura, contexto y enlazado interno por encima del relleno.

Compartir

Guarda o comparte esta guia con el enlace limpio.