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
Réponse acceptée

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
Auteur

Ha ! merci beaucoup huggy :)

A Bientôt