Émojis remplacés par points d'interrogation

corentin.bc Messages postés 383 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38472 Date d'inscription   Statut Modérateur Dernière intervention   - 5 juin 2018 à 22:09
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 er 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.
A voir également:

1 réponse

jordane45 Messages postés 38472 Date d'inscription   Statut Modérateur Dernière intervention   4 745
 
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-name',
    'your-',
    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://forums.commentcamarche.telechargertorrent.org/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8

0