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 -
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.
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:
- Problème d'accent lors de la mise en ligne
- Partage de photos en ligne - Guide
- Mise en forme conditionnelle excel - Guide
- Mètre en ligne - Guide
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise en forme tableau word - Guide
2 réponses
Bonjour,
En plus de forcer la prise en charge de l'utf8 par pdo (voir dernier message de zernat)
Il faut également indiquer, dans tes fichiers HTML (dans le head) que tu es en utf8
tu peux par exemple y mettre :
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.
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.
quel code utilises tu pour te connecter à la base de donnée
Pour me connecter à la base de données j'utilise
Sinon pour ajouter des articles par exemples j'utilise ça:
<?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; }
C'est justement fait pour ça.
https://docs.moodle.org/19/fr/Convertir_votre_base_MySQL_en_UTF-8