Problème d'encodage

Par Masso, il y a 10 ans


Bonjour à tous,

Voila je suis en train de creer un systeme pour creer des aperçus d'articles sur une page d'accueil.
Voici un bout du code pour visualiser :

<?php $bdd = new PDO($dsn, $user, $pass); $sql = 'SELECT * FROM articles'; $req = $bdd->query($sql); while($data = $req->fetch()){ echo "<article class='preview'> <div class='image'> <a href='#'><img class='vignette' src='{$data['image']}'</a> </div> <div class='apercu'> <span class='text'> <h3>{$data['titre']}</h3> <em>{$data['date']}</em> </span> </div> <div class='few-text'> <p>{$data['chapeau']}</p> </div> <div class='mask-few-text'></div> </article>"; } ?>

Cette balise php est dans le code html de la page et je precise bien sûr que l'encodage de la page et en utf-8.

Alors voila mon soucis : Le texte qui s'affiche sur l'aperçu n'affiche pas les caractères accentués.
l'index.php est en utf-8 et la table sql est en utf8_general_ci.

Pouvez vous m'expliquer ? Faut t'il utiliser une fonction au autre ?

Merci d'avance

2 réponses

Huggy, il y a 10 ans

Bonjour Masso,
Tu dois communiquer avec la bd en utf-8, pour cela il faut envoyer la commande SET names utf8
tu peux le faire lors de la connexion

$pdo = new PDO('mysql:host='.$db_host.';dbname='.$db_name, $db_user, $db_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
Masso, il y a 10 ans

Ha ! merci beaucoup huggy :)

A Bientôt