OVH Cloud OVH Cloud

htmlentities ?

6 réponses
Avatar
Gabriel
bonjour

soit un champ dans une db qui contient ceci :
histoire : "le petit chat est parti pêcher et s'en est allé".

je veux afficher l'histoire dans une page php du navigateur dont
l'encodage est défini en utf8.

Donc je fais ceci :
$row['histoire'] = htmlentities($row['histoire'], ENT_QUOTES, UTF8);

j'ouvre ma page dans firefox et là je comprends plus :
les caractères intéressants sont remplacés par des ? dans des petits
losanges noirs.
J'affiche la source du code généré :
D<ici le ptit losange>placement par ex.

Je change l'encodage du navigateur en ISO8859-1 et là c'est bon ca
apparait clairement dans le browser mais la source est tjs incorrecte.

Question : qu'ais-je loupé dans l'utilisation de htmlentities et de
l'encodage dans ma page ?

Merci !

6 réponses

Avatar
bruno
c'est pas dans le charset declaré dans ta page HTML? faut dire que
c'est du utf-8 non?
Avatar
Choub
Il faut définir l'encodage de la page HTML elle-meme. Encoder ta
chaine de caractère en UTF-8 n'est pas suffisant, il faut dire au
naviguateur d'utiliser l'UTF-8 sur cette page en se servant d'une
balise META dans l'entête de ta page HTML:
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

En espérant avoir répondu à tes attentes.

Cordialement
Avatar
ftc
je veux afficher l'histoire dans une page php du navigateur dont
l'encodage est défini en utf8.

Donc je fais ceci :
$row['histoire'] = htmlentities($row['histoire'], ENT_QUOTES, UTF8);

j'ouvre ma page dans firefox et là je comprends plus :
les caractères intéressants sont remplacés par des ? dans des petits
losanges noirs.


Il faudrait que tu vérifie que ta source ( base de données en locurence
) est bien en UTF-8. C'est la source des données qui compte, pas le
fichier HTML de destination.

Avatar
Gabriel
tout d'abord merci à tous de m'avoir éclairci les idées !


Mnt une qeuestion :
l'utf-8 est bien un sur-ensemble de l'iso8859xx donc du 8859-15 donc si
je mets en utf-8, le symbole euro devrait marcher non ?

Je suis preneur d'un lien si qqun en connait un bon, sinon je vais
googler :)
Avatar
Patrick Mevzek
l'utf-8 est bien un sur-ensemble de l'iso8859xx donc du 8859-15 donc si


Non.

La seule partie commune c'est les 128 premières valeurs, qui sont de
l'ASCII (7 bits) dans les deux cas.

--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>

Avatar
dmetzler
Le lien ultra utile qui ouvre les yeux sur l'unicode (déjà posté
ici...) :

http://french.joelonsoftware.com/Articles/Unicode.html