OVH Cloud OVH Cloud

HTML et accents

3 réponses
Avatar
Zouplaz
Bonjour, j'ai un soucis : un de mes champs $_POST[] contient du HTML.

Si j'écris directement les données en question, les caractères spéciaux
(accents et autres) sont stockés en 8bits au lieu d'utiliser les entities
(et je ne peux pas intervenir sur ce point).

Le problème c'est que si j'utilise htmlentities() ou htmlspecialchars()
tous les symboles < et > utilisés dans les balises sont également
convertis.


Donc, comment puis-je traiter un fichier HTML contenant des caractères
spéciaux non encodés sans altérer les balises ??

A part repasser derrière htmlentities et remplacer les version encodées de
< et > ?

J'ai pas trouvé d'autre solution (et même pas testé celle ci)...

Merci

3 réponses

Avatar
Guillaume Bouchard
Zouplaz wrote:
Bonjour, j'ai un soucis : un de mes champs $_POST[] contient du HTML.

Si j'écris directement les données en question, les caractères spéciaux
(accents et autres) sont stockés en 8bits au lieu d'utiliser les entities
(et je ne peux pas intervenir sur ce point).


Ou est le problème ?

Donc, comment puis-je traiter un fichier HTML contenant des caractères
spéciaux non encodés sans altérer les balises ??


L'encodage de ta page n'est pas sensé geré cela de façon correct à lui
tout seul ?

Je n'ia jamais rien fait (et jamais rien eu à faire) pour que mes
accents fonctionne, il suffit de positioner un bon Content-Type et le
tour est joué.

--
Guillaume.

Avatar
Zouplaz
Guillaume Bouchard - :

Zouplaz wrote:
Bonjour, j'ai un soucis : un de mes champs $_POST[] contient du HTML.

Si j'écris directement les données en question, les caractères
spéciaux (accents et autres) sont stockés en 8bits au lieu d'utiliser
les entities (et je ne peux pas intervenir sur ce point).


Ou est le problème ?


Et bien je suppose (mais peut-être à tort) qu'un utilisateur Anglais ou
Chinois ne les verra pas...


Donc, comment puis-je traiter un fichier HTML contenant des
caractères spéciaux non encodés sans altérer les balises ??


L'encodage de ta page n'est pas sensé geré cela de façon correct à lui
tout seul ?



Oui mais entre la déclaration de l'encodage et le contenu réel, je suppose
qu'il faut qu'il y ait une correspondance...


Et puis, dans ce cas à quoi servirait la fonction htmlentities() ?


J'comprends pas


Avatar
Guillaume Bouchard
Zouplaz wrote:
Si j'écris directement les données en question, les caractères
spéciaux (accents et autres) sont stockés en 8bits au lieu d'utiliser
les entities (et je ne peux pas intervenir sur ce point).


Ou est le problème ?



Et bien je suppose (mais peut-être à tort) qu'un utilisateur Anglais ou
Chinois ne les verra pas...


Normalement si !
Si je ne dis pas de betises, ton entitée HTML n'est en fait qu'une sorte
de reference aux caractere qui va bien de l'encodage approprié (ici
iso-8859-1)

Oui mais entre la déclaration de l'encodage et le contenu réel, je suppose
qu'il faut qu'il y ait une correspondance...


Ba eu oui, un encodage. Si tu encode ta page en iso ou en utf, il y a
une difference.
En fait, tu ne vois pas la difference vu que ton editeur detecte
l'encodage tout seul, mais je peut t'assurer que ton "é" sera (je dit
n'importe quoi) 00101011 en iso et 0010001001 en utf-8 si tu lisais le
fichier bit par bit. Après c'est au boulot du lecteur (ici le
navigateur) de faire la relation entre chaques sequences de bits d'après
la table de conversion que lui fournit l'encodage.

Et puis, dans ce cas à quoi servirait la fonction htmlentities() ?


Pour les cas ou tu aurais besoin d'entités html, je ne sais pas... Mais
je ne m'en suis jamais servit, donc ;o)

Tu sais, il y a plein de fonctions php qui sont inutiles :) (session_*
... :p)

J'comprends pas


Apparament ton problème concerne les notions sur l'encodage de
caractere, ce n'est pas du php. Je ferais bien un FU2 quelque part, mais
je sais pas trop où...

--
Guillaume.