Page 1 sur 1
Caractères et htmlentities
Posté : 11 juil. 2010, 21:47
par fabrice88250
Bonjour,
si j'affiche des données de ma base de cette façon :
<?PHP echo $result['situation']; ?>
j'ai par exemple comme résultat : été
maintenant si je protège un peu l'affichage et que je met :
htmlentities($result['situation']);
au lieu d'avoir comme résultat : été j'ai été
Comment puis-je résoudre se problème d'affichage ?
Re: Caractères et htmlentities
Posté : 11 juil. 2010, 22:14
par @rthur
Bonjour,
Ceci résulte d'un problème de jeu de caractères (charset), regarde les paramètres supplémentaires de la fonction htmlentities
Re: Caractères et htmlentities
Posté : 11 juil. 2010, 22:29
par fabrice88250
ok merci. j'ai regardé la doc et effectivement le jeu de caractères ISO-8859-1 est utilisé par défaut avec htmlentities.
Mon site est en UTF8
L'encodage de ma bdd est en utf8
Re: Caractères et htmlentities
Posté : 11 juil. 2010, 22:49
par @rthur
ok merci. j'ai regardé la doc et effectivement le jeu de caractères ISO-8859-1 est utilisé par défaut.
j'ai regardé les exemples mais je voi pas comment faire
Essaye en utf-8
Sinon au pire tu peux toujours jouer avec les fonctions utf8_encode et utf8_decode
Re: Caractères et htmlentities
Posté : 12 juil. 2010, 00:13
par AB
Pour un nouveau site essaies si possible de travailler avec utf-8.
D'une part tu pourras gérer le multi langues sans problème et d'autre part ce sera le fonctionnement par défaut des futures versions de php
Et puis certaines fonctions comme json_encode ne gèrent que l'utf-8...
Donc c'est partir sur de meilleures bases.
Si besoin un tuto sur l'encodage utf-8
ici
A part ça (pour rappeler mon dernier message sur l'autre topic) trouves toi un serveur avec minimum php 5.2. C'est pas du luxe

Re: Caractères et htmlentities
Posté : 12 juil. 2010, 09:36
par fabrice88250
Mon site est en UTF8
L'encodage de ma bdd est en utf8
dans ma base de données les infos sont rentrées comme ceci été au lieu d'été. (je sais pas si c'est normal)
si je suis bien en utf 8 pourquoi j'ai pas le bon affichage uniquement quand je rajoute htmletities.
je rappel avec htmlentities j'ai : été
sans html entities j'ai : été
Re: Caractères et htmlentities
Posté : 12 juil. 2010, 10:06
par @rthur
dans ma base de données les infos sont rentrées comme ceci été au lieu d'été. (je sais pas si c'est normal)
Et bien tu viens de trouver le problème

Soit ta bdd/table/champ n'est pas en UTF8, soit ce qui l'alimente ne l'est pas.
Re: Caractères et htmlentities
Posté : 12 juil. 2010, 13:20
par fabrice88250
Pour ma base de données :
Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)
Interclassement pour la connexion MySQL: utf8_general_ci
mes champs sont enregistrés en utf8_general_ci
quand j'ajoute des données dans ma base depuis un formulaire je fais :
$type = mysql_real_escape_string($_POST['type']);
$description = mysql_real_escape_string($_POST['description']);
$sql = "INSERT INTO IWbiens(id, type, description)
VALUES('','$type', '$description')";
mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
echo 'La nouvelle référence a été ajoutée.';
mysql_close();
pourtant si je rentre dans ma base des caractères comme été
a l'affichage des donnes si je fais :
<?PHP echo htmlentities($result['situation']); ?>
j'ai
été qui s'affiche
si je fais
<?PHP echo $result['situation']; ?>
j'ai
été qui s'affiche
Re: Caractères et htmlentities
Posté : 12 juil. 2010, 13:24
par stealth35
verfie que ton fichier sois encoder en utf-8 et que l'en tete du serveur revoie aussi de l'utf-8

Re: Caractères et htmlentities
Posté : 12 juil. 2010, 13:29
par fabrice88250
oui mes pages son bien en utf8
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Re: Caractères et htmlentities
Posté : 12 juil. 2010, 13:33
par stealth35
ca ne suffis pas ca, il faut verfié l'encodage et l'en tete
Re: Caractères et htmlentities
Posté : 12 juil. 2010, 14:12
par fabrice88250
et comment on verifi ca ?
Re: Caractères et htmlentities
Posté : 12 juil. 2010, 14:13
par stealth35
et comment on verifi ca ?
tu trouvera ton bonheur ici :
faq-tutoriels/encodage-utf-t245062.html

Re: Caractères et htmlentities
Posté : 12 juil. 2010, 14:35
par fabrice88250
bonj'ai suivie ton lien et a un moment donnée ils disent de préféré mettre htmlspecialchars à htmlentities.
J'ai donc changé par htmlspecialchars et du coup j'ai bien les bons caractères qui s'affichent....
Par contre dans ma base de données j'ai toujours les mêmes caractères qui s'enregistrent au lieu de é --> (é) à ....
Mais bon sa fonctionne comme ça et je croi que je vai m'en tenir là car je trouve pas d'autre soilution.
Merci pour votre aide.
Re: Caractères et htmlentities
Posté : 12 juil. 2010, 17:31
par AB
bonj'ai suivie ton lien et a un moment donnée ils disent de préféré mettre htmlspecialchars à htmlentities.
J'ai donc changé par htmlspecialchars et du coup j'ai bien les bons caractères qui s'affichent....
Par contre dans ma base de données j'ai toujours les mêmes caractères qui s'enregistrent au lieu de é --> (é) à ....
Mais bon sa fonctionne comme ça et je croi que je vai m'en tenir là car je trouve pas d'autre soilution.
Merci pour votre aide.
Un peu plus haut dans ce tuto sur l'utf-8 je dis aussi de commencer tes pages php par
header('Content-Type: text/html; charset=UTF-8');
et un peu plus bas juste après ta connexion à la base de donnée
et avant tes requêtes, faire :
mysql_query("SET NAMES 'utf8'");
avec ça tu devrais avoir des enregistrements corrects dans ta bdd (tu ne devrais pas les laisser comme ça, ça va être galère si tu veux par la suite faire des recherches sur des caractères ou des échanges de données etc.)
Quand on dit qu'il faut préférer htmlspecialchars à htmlentities c'est que cela évite de renseigner le deuxième paramètre de htmlentities pour spécifier l'encodage puisque par défaut cette fonction travaille en iso....