Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/03/2011, 13h16   #1
Invité de passage
 
Inscription : septembre 2009
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 19
Points : 4
Points : 4
Par défaut Caractère spéciale HTML et tag

Bonjour,

En voulant afficher depuis un script PHP (echo) un texte en français (donc avec les accents) j'obtiens des losanges à la places des caractères spéciaux...

Cependant dans le fichier source .php (mais hors des balises <?php ?>) j'ai mis des accents qui passe sans problème... Est-ce que la commande echo formate son argument ?? C'est louche ça...

Je sais qu'il y a la fonction htmlentities() qui permet bien à la commande echo de fonctionner sans problème avec les accents mais du coup les balises ne sont plus conservés !
Savez-vous comment contourner ce problème facilement (sans scripts avec str_replace) ?

Voici un exemple de code :
Code :
1
2
3
4
5
6
 
<b>école</b>
<?php
echo "<b>école</b>";
echo htmlentities("<b>école</b>");
?>
Et voici la sortie correspondante :
Code :
1
2
3
4
école
◙cole
<b>école</b>
arutan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2011, 14h45   #2
Membre régulier
 
Avatar de SnowStyle
 
Homme
Développeur Web
Inscription : octobre 2005
Messages : 68
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2005
Messages : 68
Points : 73
Points : 73
Je n'ai pas souvenir d'avoir eu des problèmes à echo des accents, bizarre, y'a surement un autre truc à faire "plus global" que htmlentities

En attendant de trouver mieux, il te suffit de faire de la concaténation :

Code :
1
2
3
4
 
<?php
echo '<b>'.htmlentities('école').'</b>';
?>
Enfin je suggère de jeter un oeil du coté de l'encodage de ta page html, je suppose que ça devrait résoudre le souci sans avoir recours aux htmlentities, tout du moins pour des accents
SnowStyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2011, 17h29   #3
Invité de passage
 
Inscription : septembre 2009
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 19
Points : 4
Points : 4
Merci pour la réponse...
Oui la concaténation reste une solution mais ça n'explique pas le problème..
Bien sur l'encodage a été ma première vérification mais justement sur la même page les accents écrit en dur dans le .php passe sans problème, pas avec la commande echo...
Sinon le codage de la page est en unicode (utf-8)..
Merci.
arutan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2011, 18h07   #4
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 587
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 587
Points : 861
Points : 861
et ta balise meta :
Code :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2011, 19h40   #5
Invité de passage
 
Inscription : septembre 2009
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 19
Points : 4
Points : 4
Merci pour la réponse mais la même est déjà présente...
J'ai aussi vérifié au niveau du navigateur...
arutan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2011, 23h32   #6
Membre actif
 
Inscription : décembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 184
Points : 198
Points : 198
si tu affiche les accents tu ne peux le faire en utf-8 sauf en les encodants en utf-8
faut spécifier au navigateur le bon encodage
d'ailleurs pour vérifier ce type de problème est de changer l'encodage de traitement via le menu affichage de ton navigateur
Code :
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Helfima est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 10h56   #7
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 709
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 709
Points : 3 279
Points : 3 279
Salut

Code :
1
2
3
4
<?php
echo "<b>école</b>";
echo htmlentities("<b>école</b>");
?>
Si tu utilise comme encodage UTF-8, alors il faut le préciser dans la fonction htmlentities (idem pour htmlspecialchars).
Exemple :
Code :
echo htmlentities('école', ENT_COMPAT, 'UTF-8');
Quand tu rencontre un comportement anormal comme ici, réfère toi à la doc de Php sur http://fr2.php.net/

Pour cette fonction, il est précisé ceci :
Citation:
Cette fonction prend un troisième argument optionnel charset qui définit le jeu de caractères utilisé durant la conversion.
Actuellement, le jeu de caractères ISO-8859-1 est utilisé par défaut
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/04/2011, 09h30   #8
Invité de passage
 
Inscription : septembre 2009
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 19
Points : 4
Points : 4
Bonjour,
Désolé du délai et désolé de passer à travers la doc...
Mais je n'avais pas imaginé que cela aurait pu venir de ces fonctions.
En tout cas merci !!
Je met en résolu..

LOL on fait comment ?
Rien dans la faq ni dans le forum...
arutan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h15.


 
 
 
 
Partenaires

Hébergement Web