Problème Include PHP / caratères spéciaux

Fermé
1449thomas - 14 févr. 2008 à 15:30
 theo - 7 mars 2011 à 16:50
Bonjour,

je suis en train de réaliser le site internet de ma liste BDE : www.followme2008.fr

j'ai choisi d'utiliser une structure en php via des includes. le fichier où sont regroupées toutes les pages est ici : www.followme2008.fr/default.php

Comme page d'accueil, ce petit module affiche www.followme2008.fr/edito.php

Lorsque l'on appelle ces pages directement via le navigateur, il n'y a aucun problème de caractères.


En revanche, pour une raison que j'ignore, lorsque je l'appelle via cette adresse : www.followme2008.fr/index.php
Certains caractères ne s'affichent pas correctement. Or, c'est problèmatique puisque c'est la page principale du site, qui conditionne toutes les autres.

J'ai d'abord pensé à un bug dans la configuration de la langue ou du code parasyte qui ferait bugguer. Mais après avoir légérement "épuré" le code html, ça ne fonctionne toujours pas.

Ensuite, je viens de tenter une autre expérience en créant un fichier www.followme2008.fr/test.php où ne figure que le code d'appel include php de la page "edito.php".
Et, encore une fois, alors qu'il ne figure que le code include, les caractères sont mal affichés. Pourtant en allant directement sur edito.php, tout fonctionne parfaitement.

À la base, tout fonctionnait parfaitement malgré les "double include". Mais depuis une dernière mise à jour qui ne concernait pourtant que les meta tags et le code du "body", ce bug est apparu et je ne sais pas comment le résoudre même après avoir supprimé ce que j'avais mis à jour.

Cela se produit avec de nombreux navigateurs (IE, firefox, safari, opera).

J'attends vos réponses afin de résoudre ce problème au plus vite. Après avoir cherché quelque peu sur internet, je n'ai trouvé aucune solution.

Merci d'avance !!
A voir également:

3 réponses

Xil Messages postés 350 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 11 juin 2009 257
14 févr. 2008 à 15:52
Si tu ne défini pas de charset pour ta page, la reconnaissance des caractères spéciaux est un peu chaotiques, les navigateur les affichent au petit bonheur la chance.
Si tu n'as pas le même format d'encodage dans tes fichiers edito.php et default.php, chacun séparément ca peut fonctionner, mais ensemble il y'a conflit.

Tu dois donc définir un charset dans ta page index (mais pas dans edito et default, puisqu'ils sont include):
<META http-equiv="Content-Type" Content="text/html; charset=iso-8859-1">
Pour les charset les plus courant, tu as iso-8859-1 (europe occidentale) et UTF-8 (unicode, compatible tout alphabet).
Ensuite il faut te plier à ce charset pour encoder tes caractères spéciaux.

Tu peux aussi jouer avec
https://www.php.net/utf8_encode et
https://www.php.net/utf8_decode

C'est très pratique pour ne pas trop se casser la tête sur chaque encodage.
2
Problème réglé !

merci beaucoup. Je savais bien que ça provenait d'un problème de meta mais je n'ai pas trouvé comment le résoudre :)
0
Bonjour,

J'ai à peu près le même problème.
J'ai construit mon site avec plusieurs frames CSS.
Donc mon index.php ressemble à cela:

<?php

include banner.php;
include content.php;
include footer.php;

?>

simple... et tout fonctionne avec un charset=utf-8 dans le fichier banner.php!

seulement quand je vais sur la page form.php qui ressemble à cela:

<?php

include banner.php
include contentform.php
include footer.php

?>

et bien le contenu de ma form.php n'affiche pas les caractères spéciaux.
donc j'ai modifié mon charset et je l'ai mis en iso-8859-1 donc là ca fonctionne pour cette page mais ça déconne pour mon index.php !!

Problèmatique... quelqu'un aurait-il des pistes de réfléxions?
Merci à tous!
0
Supplément d'infos..

J'ai tout d'abord rajouter un peu sauvagement cette balise là en haut de mon contentform.php
<META http-equiv="Content-Type" Content="text/html; charset=utf-8">
et ça ne marche pas.

J'ai créer EXACTEMENT la même page qui s'appelle form2.php avec dedans comme d'hab :
include banner.php
include contentform2.php
include footer.php

et là j'ai rajouté la même balise META un peu sauvagement et là çà fonctionne.
C'est à n'y rien comprendre !!! Des pistes ??? Merci en tout cas.
0