Emojis reemplazados por signos de interrogación

corentin.bc Mensajes publicados 385 Fecha de registro   Estado Miembro Última intervención   -  
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   -
Buenas noches,
tengo un problema en mi sitio, todos los emojis están siendo reemplazados por signos de interrogación "?"
He investigado bastante, la solución que encontré es cambiar la tabla a utf8mb4.
Mi base de datos está en utf8mb4-unicode_ci.
Mi código de conexión a la base de datos es el siguiente:

try {$bdd = new PDO('mysql:host=localhost;dbname=apfr;charset=utf8mb4', '', '',
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET character_set_results = 'utf8mb4', character_set_client = 'utf8mb4', character_set_connection = 'utf8mb4', character_set_database = 'utf8mb4', character_set_server = 'utf8mb4'"));}
catch(Exception $e) {die('¡Error!');}

a pesar de todo esto el problema persiste.
¿Tendría alguna idea para que pueda deshacerme del problema de una vez por todas?
Gracias de antemano.

1 respuesta

  1. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
     
    Hola,
    Puedes especificar el charset directamente en la cadena de conexión (el dsn)
     $dsn = 'mysql:host=localhost;dbname=apfr;port=3306;charset=utf8mb4'; 

    La otra solución, un poco como la tuya pero con el collate añadido en el MYSQL_ATTR_INIT_COMMAND
     $bdd =new PDO( 'mysql:host=localhost;dbname=apfr;port=3306;charset=utf8mb4', 'your-username', 'your-password', array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PERSISTENT => false, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci" ) ); 

    no olvides tampoco verificar la codificación declarada en tus archivos así como la de tus archivos.
    Te invito a leer esto: https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8

    --
    Atentamente,
    Jordane
    0