Émojis remplacés par points d'interrogation [Fermé]

Signaler
Messages postés
384
Date d'inscription
dimanche 8 février 2015
Statut
Membre
Dernière intervention
26 juin 2020
-
Messages postés
28935
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 juillet 2020
-
Bonsoir,
j'ai un souci sur mon site, tous les émojis se voient remplacés par des points d'interrogation "?"
J'ai fais pas mal de recherche, la solution trouvée est de passer la table en utf8mb4.
Ma BDD est en utf8mb4-unicode_ci.
Mon code de connexion à ma BDD est le suivant:

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 !');}

malgré tout ça le problème perciste.
Auriez-vous une idée pour que je puisse me débarrasser du pb une bonne fois pour toutes ?
Merci d'avance.

1 réponse

Messages postés
28935
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 juillet 2020
2 608
Bonjour,
Tu peux spécifier le charset directement dans la chaine de connexion (le dsn)
$dsn = 'mysql:host=localhost;dbname=apfr;port=3306;charset=utf8mb4';

L'autre solution, un peu comme la tienne mais avec le collate en plus dans le 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"
    )
);

n'oublie pas non plus de vérifier l'encodage déclaré dans tes fichiers ainsi que celui de tes fichiers.
Je t'invite à lire ceci : https://www.commentcamarche.net/faq/47069-html-php-caracteres-accentues-et-l-utf8