Problème avec l'affichage des caractères encodés

Fermé
katsuo49 Messages postés 330 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 11 novembre 2014 - Modifié par katsuo49 le 3/07/2013 à 00:17
katsuo49 Messages postés 330 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 11 novembre 2014 - 3 juil. 2013 à 03:04
Bonsoir,

Je ne suis pas un débutant en web du tout, je vous le dis avant d'avoir les questions de base :
mon charset est en utf-8
mon encodage fichier est en uft-8
le navigateur reçoit bien de l'utf-8
ma bdd c'est de l'utf-8

Mon problème c'est que les caractères html (comme é) ne sont pas interprété mais affiché tels quel, quand le texte provient de la base de données.

Par exemple si on encode é on obtient é dans le code mais "é" affiché
et bien là j'ai "é" d'affiché.

J'ai remarqué ça avec les fonctions htmlentities et htmlspecialchars de php et c'est la première fois que j'ai ce genre de problème. j'ai essayé d'appliquer les fonctions à la lecture et/ou à l'écriture de la bdd et j'ai toujours ce résultat

Merci d'avance pour tout aide !!

Asus X52Je : ArchLinux + OpenBox
A voir également:

1 réponse

Bonjour,

:ma bdd c'est de l'utf-8
euh c'est pas que ça mais si vous allez par là: http://wiip.fr/content/choisir-le-bon-interclassement-mysql-pour-utf-8

Et regardez à avoir comme 'collation' le bon jeu de caractère pour votre hamp texte:
http://dev.mysql.com/doc/refman/5.0/fr/charset-mysql.html

:Par exemple si on encode é on obtient é dans le code mais "é" affiché
et bien là j'ai "é" d'affiché.
là j'ai rien compris, pareil non ? Si vous utilisez htmlentiies c'est normal que vous ayez &ecaute; et c'est plus correct et performant que l'utf 8 puisque que c'est le codage HTML donc le meilleur qu'il soit et que du coup pas besoin de se préoccuper de l'encodage du texte.

Pour info:

http://www.commentcamarche.net/contents/489-caracteres-speciaux-html

Ce sont bien des entités html correspondant au ascii et palliant au fait qu'il n'y ait pas certains caractères (maudits anglophones).
0
katsuo49 Messages postés 330 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 11 novembre 2014 25
3 juil. 2013 à 03:04
Alors pour ma base de données évidemment si je dis qu'elle est en utf-8 c'est par abus de langage, j'ai mis du utf8_general_ci partout pour être certain de ne pas avoir de problème.

Le coup de l'affichage des caractères je sais comment fonctionne ce mécanisme et je sais que du coup l'encodage "n'a plus d'importance" si on encode les caractère spéciaux en html mais mon problème c'est qu'ils sont pas affiché comme il devrait.

En gros (vu que j'ai pas été clair apparemment)
- si dans le code j'ai un "é" à l'affichage j'ai "é" logique
- si dans mon code je mets manuellement "é" à l'affichage j'ai "é"
si j'utilise la fonction htmlspecialchars ou htmlentities sur une chaine contenant un "é" à l'affichage j'ai un "é"
si j'utilise la fonction htmlspecialchars ou htmlentities sur une chaine contenant un "é" à l'affichage j'ai un "é" et non "é" comme dans les autres cas.

Je sais que du coup je devrais avoir "é" dans le code source et "é" sur la page or ce n'est pas le cas dans le cas où la chaîne provient de la base de données.
0