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

Résolu
Airox Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   -  
Airox Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention   13
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Avec UTF8 .. plus de soucis d'accents.
C'est justement fait pour ça.
0
Airox Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   13
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Airox Messages postés 146 Date d'inscription   Statut Membre Dernière intervention  
 
0
Airox Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   13
 
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   Statut Membre Dernière intervention   16
 
quel code utilises tu pour te connecter à la base de donnée
0
Airox Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   13
 
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   Statut Membre Dernière intervention   16
 
quelle est la version de ton php
0
Airox Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   13
 
Du PHP 5
0
zermat Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   16
 
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   Statut Membre Dernière intervention   13
 
Donc il s'agit de la 5.5.12
0