Problème d'accent lors de la mise en ligne

Résolu/Fermé
Airox Messages postés 146 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018 - 18 mai 2016 à 17:23
Airox Messages postés 146 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018 - 18 mai 2016 à 22:11
Bonjour à tous, je demande votre attention pour m'aider sur un problème très récurrent que j'ai vu sur énormément de forums mais je n'arrive toujours pas à le résoudre.

Pour mon projet d'ISN (épreuve du bac), j'ai dû créer un site internet (site de vente). Malheureusement j'ai des problèmes d'accents entre le PHP et le HTML, du moins quand je passe mon site en ligne (en local tout va bien). Par exemple lorsque je crée un article et que je l'envoie dans ma base de donnée il s'écrit mal et les articles ont ensuite plein de "?" dans leur titre et description à la place des accents.

J'ai créé mon site avec le charset: iso-iso-8859-1, car avec l'UTF-8 il y avait encore plus de problèmes. J'ai essayé de mettre ma base de données en latin1_general_ci et en UTF-8 mais ça ne change rien. Voilà le lien de mon site si vous voulez aller le checker: https://www.hostinger.fr/free-eol?utm_source=fri&utm_medium=www&utm_campaign=free_eol

Si vous avez besoin d'informations pour m'aider à résoudre mon problème je peux vous envoyer des morceaux de mon code.
A voir également:

2 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
18 mai 2016 à 19:37
Bonjour,

En plus de forcer la prise en charge de l'utf8 par pdo (voir dernier message de zernat)

 try{
   $bdd = new PDO("mysql:host=localhost;dbname=airtech;charset=UTF8", 'root', '');
   $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //pour activer l'affichage des erreurs pdo
} catch(PDOException $e){
     echo 'ERROR: ' . $e->getMessage();
}    


Il faut également indiquer, dans tes fichiers HTML (dans le head) que tu es en utf8
tu peux par exemple y mettre :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


voir ici : https://www.alsacreations.com/astuce/lire/69-declarer-encodage-des-caracteres.html

Bien entendu.. il faut que tes fichiers php soient également encodés en utf8
Pour ça .. ouvre les dans notepad++ par exemple et regarde dans le menu "encodage". Prend UTF8 SANS BOM.

Et pour finir, tu repasses ta BDD en UTF8.
Bien entendu.... si dans tes tables tu as déjà des choses de remplis avec des caractères bizarres.. il faut que tu les modifies pour y remettre les accents.



1
Airox Messages postés 146 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018 13
18 mai 2016 à 19:42
D'accord mais si je passe tout mon site en UTF-8, est ce que je vais encore avoir des problèmes d'accents, car au début de mon développement tout les caractères accentués dans mon php apparaissait avec un "?" et le seul moyen que j'avais trouvé était le iso-8859-1
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
18 mai 2016 à 19:45
Avec UTF8 .. plus de soucis d'accents.
C'est justement fait pour ça.
0
Airox Messages postés 146 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018 13
18 mai 2016 à 19:56
D'accord merci je vais essayer de tout ré encoder et changer tout mes charset pour que ce soit tout propre et je vous dit ce qu'il en ai. J'ai été mal orienté dès le départ car sur beaucoup de forums ils conseillent l'ISO-8859-1 quand on utilise le php. Merci pour vos conseille on croise les doigts.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > Airox Messages postés 146 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018
18 mai 2016 à 20:00
0
Airox Messages postés 146 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018 13
18 mai 2016 à 22:11
Merci énormément mon site est maintenant entièrement en UTF-8 et tout marche niquel. Je pensais pas que l'encodage était autant important, pour moi il suffisait d'annoncer les charset. Je vous remercie encore et surtout toi jordane, se n'est pas la première fois que tu me viens en aide ;)
0
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
18 mai 2016 à 17:53
quel code utilises tu pour te connecter à la base de donnée
0
Airox Messages postés 146 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018 13
Modifié par Airox le 18/05/2016 à 18:08
Pour me connecter à la base de données j'utilise
<?php
// Connexion à la base de données
try
{
    $bdd = new PDO('mysql:host=localhost;dbname=airtech', 'root', '');
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}

?>

Sinon pour ajouter des articles par exemples j'utilise ça:
if (isset($description_article)) {
    $description_article = htmlspecialchars($description_article,ENT_QUOTES,'ISO-8859-1');
    if (!preg_match('#^.+#',$description_article)) {//Si il y a une description
        $validation = 1;
        $erreur = 'METTRE UNE DESCRIPTION';
    }

}

if (isset($titre_article,$categorie_article,$description_article,$prix_article,$image_article,$crea_article_form) AND $validation==0)
{
    //envoie des donnees du formulaire
    $req = $bdd->prepare('INSERT INTO articles(titre,categorie,marque,description,image,prix,date_article) VALUES(:titre, :categorie,:marque ,:description,:image,:prix,CURDATE())'); // on proc?de ? l'envoit dans la BDD

    $req->execute(array(

        'titre' => $titre_article,
        'categorie' => $categorie_article,
        'marque' => $marque_article,
        'description' => $description_article,
        'image' => $image_article,
        'prix' => $prix_article

    ));
    //On remet les variables à NULL pour plus les afficher dans le formulaire
    $validation_form = 'ARTICLE ENVOYE';
    $titre_article = null;
    $description_article = null;
    $categorie_article = null;
    $marque_article = null;
    $prix_article = null;
    $image_article = null;
}
else
{
    NULL;
}
0
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
18 mai 2016 à 18:51
quelle est la version de ton php
0
Airox Messages postés 146 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018 13
18 mai 2016 à 19:04
Du PHP 5
0
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
18 mai 2016 à 19:10
oui php 5.x.x
il faut la version complète
par exemple que donne echo PHP_VERSION;
0
Airox Messages postés 146 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018 13
18 mai 2016 à 19:18
Donc il s'agit de la 5.5.12
0