Nel Posté 11 Mars 2005 Partager Posté 11 Mars 2005 Je sais que c'est sans doute un problème récurrent mais je n'ai pas trouvé de réponse en faisant une recherche sur le forum... Je n'ai pas un très haut niveau en PHP. Pour que mes pages soient valides XHTML, et soient correctement affichées il faut que les caractères accentués soient correctement encodés (les classiques é pour é et & pour &)... Comme je veux pouvoir ajouter ou modifier les données de ma base aussi bien via PHPMyAdmin que via la page d'administration que j'ai créée moi-même, il faut que les caractères problématiques soient modifiés lorsqu'ils sont récupérés dans la base de données. Pour cela dois-je à un moment un $str=ereg_replace('&','&',$str); ou bien y'a t'il un format que je peux utiliser pour mes données qui puisse me simplifier la vie ? Je m'y perds un peu entre les VARCHAR, TINYTEXT, BLOG etc... Où puis-je trouver de la doc là dessus ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Perrine Posté 11 Mars 2005 Partager Posté 11 Mars 2005 Bonjour Nel Tu peux déclarer le jeu de carcactères ISO-8859-1 dans le <head> de ton doc de la manière suivante : <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> Ainsi, tu n'as plus besoin d'encoder les caractères Lien vers le commentaire Partager sur d’autres sites More sharing options...
lupucide Posté 11 Mars 2005 Partager Posté 11 Mars 2005 Si, toujours encoder les & dans une URL. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nel Posté 11 Mars 2005 Auteur Partager Posté 11 Mars 2005 J'ai dû mal m'exprimer. Mes pages utilisent bien le jeu de caractères ISO-8859-1. Seulement est-ce que cela suffit pour que les caractères spéciaux s'affichent correctement en toute occasion (même sur Mac OS par exemple) ? De plus si j'affiche un caractère & au moyen de PHP celui-ci sera refusé par la validation XHTML strict... Ah ils sont beau les standards !!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
lupucide Posté 11 Mars 2005 Partager Posté 11 Mars 2005 Différence en entre caractères ISO et HTML => http://www.commentcamarche.net/html/htmlcarac.php3 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ganf Posté 12 Mars 2005 Partager Posté 12 Mars 2005 - tu n'as pas besoin de coder tes caractères étendus (accents par exemple) sous forme d'entité (é) si tu déclares correctement ton jeu de caractères dans le fichier HTML - les varchar, tinytext et autres sont des types de données pour MySQL et les autres SGBD. Leur rôle est de stocker la donnée, il ne t'aideront jamais à faire autre chose, ils n'ont en particulier rien à voir avec la notion d'échappement HTML - tu ne devrais jamais utiliser ereg_* mais toujours preg_* - tu n'as pas besoin d'ereg ou preg pour faire les échappements HTML (mise sous forme d'entités) : htmlspecialchars() et htmlentities() font très bien ça toutes seules - Par contre, de même que tu dois faire un addslahes pour éviter les apostrophes dans les chaînes SQL, de même que tu dois mettre\" pour faire un guillemet quand tu écris une chaîne PHP, en HTML certains caractères sont spéciaux car ils déclenchent des actions spécifiques. Ce sont en particulier < > et & (début et fin de balise, début d'entité). Il doivent donc être échappés si tu ne veux pas qu'ils soient interprétés et jouent leur rôle "magique". La fonction pour les échapper est htmlspecialchars(). Tous les langages, que ce soit le SQL, le shell, le HTML, ls XML, PHP ou le C, ont des caractères spéciaux pour traiter les données et nécessitent de passer par une fonction d'échappement. Ca n'a rien à voir avec "...les standards..." comme tu sembles les nommer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nel Posté 12 Mars 2005 Auteur Partager Posté 12 Mars 2005 Merci Ganf, j'y vois déjà un peu plus clair. J'ai en effet certainement tendance à tout mélanger Je vais donc me renseigner à propos de cette fameuse fonction "htmlspecialchars()"... Lien vers le commentaire Partager sur d’autres sites More sharing options...
maximettb Posté 14 Mars 2005 Partager Posté 14 Mars 2005 J'ai dû mal m'exprimer.Mes pages utilisent bien le jeu de caractères ISO-8859-1. Seulement est-ce que cela suffit pour que les caractères spéciaux s'affichent correctement en toute occasion (même sur Mac OS par exemple) ? De plus si j'affiche un caractère & au moyen de PHP celui-ci sera refusé par la validation XHTML strict... Ah ils sont beau les standards !!! <{POST_SNAPBACK}> Oui, l'affichage s'effectue correctement, mais pour valider, il faut cependent que tous les caractères spéciaux (& notemment) compris dans les URLs des liens soient correctement encodés avec les entités correspondantes. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant