Bonjour à tous,

Je viens vous voir car je n'arrive pas à résoudre un probleme recurent sur mon site:

Je fais bien la balise meta sur ma page index.php
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />

Ca marche bien, sauf quand c'est du texte issue d'une autre page php que j'integre via un include. Dans l'autre page il n'y a pas de déclaration meta car c'est juste un div et que je fais tjrs cette include dans ma page index2.php

<div>
Mon texte avec des accents
</div>

Si quelqu'un connait la solution, merci beaucoup

Alexandre
Vérifie :
- l'encodage indiqué dans l'en-tête HTTP Content-Type
- dans la balise meta Content-Type
- ainsi que celui de tous tes fichiers qu'ils soient directement appelés ou inclus à partir du script principal ou d'un script lui-même inclus.
L'encodage doit être absolument partout le même.
- dans la balise meta Content-Type

Pour ca c'est bon, mais qu'est ce que tu appelles :

- l'encodage indiqué dans l'en-tête HTTP Content-Type ???

Je dois me planter à ce niveau là.

Merci de ton aide.
Ce que j'appelle en-têtes HTTP sont les informations que le serveur transmet avant d'envoyer la page proprement dite. Cette indication a la priorité sur la balise meta.
En php, il est possible de définir les en-têtes HTTP à envoyer au moyen de la fonction header que l'on connaît surtout pour son header("Location:...");
Location est aussi un en-tête HTTP, par ailleurs.

On fixe donc l'en-tête HTTP Content-Type de la manière suivante par exemple :
header("Content-Type:text/html; charset=iso-8859-1");
Remplace iso-8859-1 par utf8 si ton contenu est en utf8.
Je suis désolé de revenir vous voir, mais ca ne marche tjrs pas.

J'ai donc ma page principal XHTML avec l'entete suivante:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />


Et dans le corps de la page quand je met des é et è, pas de probleme, par contre si je les met dans une autre page comme ceci:

Hello lé world


Si j'inclue donc cette page ca ne marche pas.
Si maintenant au debut de cette page que j'inclue je mets


<?php
header("Content-Type:text/html; charset=iso-8859-1");
?>


J'ai le message d'erreur suivant:

Warning: Cannot modify header information - headers already sent by (output started at c:\documents and settings\abillau1\desktop\billaud\billaud.net\commandes_vins\index2.php:6) in c:\documents and settings\abillau1\desktop\billaud\billaud.net\commandes_vins\accueil.php on line 2

J'ai donc un peu de mal à comprendre, il me dit que j'ai deja déclaré...

Si quelqu'un a une idée, merci.

Alexandre
creusois a écrit :
Et dans le corps de la page quand je met des é et è, pas de probleme, par contre si je les met dans une autre page comme ceci:
Hello lé world

Si j'inclue donc cette page ca ne marche pas.

Cela signifie sans doute que :
1. l'encodage réel des caractères de ta page principale est bien l'encodage déclaré (iso-8859-1, sauf si les en-têtes HTTP déclarent autre chose, car ils sont prioritaires... à vérifier, donc[1]) ;
2. l'encodage du deuxième fichier, celui que tu inclues, est différent de celui de la page principale.

Pour que tout marche, tout doit concorder :
– l'encodage de la page principale ;
- l'encodage des fichiers inclus ;
- l'encodage des données provenant des bases de données (le cas échéantà ;
- l'encodage déclaré dans les en-tête HTTP (cf. la FAQ pour savoir comment vérifier les en-tête HTTP) ;
- l'encodage déclaré dans la balise META (pas indispensable dans le cas d'une consultation en ligne, mais utile malgré tout).

--
1 - cf. la FAQ : http://forum.alsacreations.com/faq/#item78
Merci pour ton aide, mais je suis maintenant un peu perdu.

Les lettres avec accents sont en brut dans la source de la page, et pour le reste je ne sais pas ce que vous appeller:

-L'encodage déclaré dans les en-tête HTTP

Moi clairement j'ai deux pages, les suivantes:
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
</head>
<body>
<p>Salut ici mes accents marche léééééééé</p>
<?php
include('accueil.php');
?>
</body>
</html>


Et
accueil.php

<p> Voici la page que j'insere ou les accents merde ééééééé
</p>



Donc dans la premiere pas de probleme par contre ce que j'y inclue (la seconde page), les accents merde.

J'ai bien comrpis que tu me demandais si le code source etait codé pareil dans les deux pages. Elles le sont. Et par contre pourla declaration, je ne vois pas comment faire.

Si je met en php le code suivant header(.... il me sort une erreur comme precedement dit.
Modifié par creusois (06 Sep 2006 - 16:26)
Je t'ai donné une courte explication sur ce que sont les en-têtes HTTP dans un post au-dessus.
Pour en savoir plus, Google est ton ami.

Quel logiciel utilises-tu ? Ca nous permettra peut-être de t'indiquer quoi faire pour changer le jeu de caractères à utiliser si nécessaire.
creusois a écrit :
J'ai bien comrpis que tu me demandais si le code source etait codé pareil dans les deux pages. Elles le sont.

Je peux me tromper, mais si les caractères accentués d'une page passent correctement, et ceux du deuxième fichier (celui qui est inclus) ne passent pas bien, il y a fort à parier que les deux fichiers n'ont pas le même encodage des caractères.
As-tu vérifié dans la configuration de ton éditeur quel encodage par défaut était utilisé ? Ton éditeur t'affiche-t-il l'encodage des caractères d'un fichier lorsque tu ouvres ce fichier (certains éditeurs le font) ?

Bref, es-tu sûr des encodages réellement utilisés pour tes deux fichiers ?
Pour rappel, un topo sur la distinction entre encodage réel d'un fichier et encodage déclaré se trouve ici : http://forum.alsacreations.com/faq/#item78

Je ne veux pas paraître désagréable, surtout qu'il ne s'agit sans doute que d'une fausse impression, mais c'est la troisième fois que je pointe vers cet item de la FAQ, et je l'impression que sois tu ne l'as pas lu (ou alors en diagonale), soit tu ne l'as pas compris (ce qui se comprend tout à fait, c'est pas évident à assimiler).
Si c'est obscur pour toi, tu peux toujours demander des précisions.

creusois a écrit :
Et par contre pour la declaration, je ne vois pas comment faire.

Quentin a indiqué comment déclarer l'encodage via l'en-tête HTTP (fonction PHP header(), à n'utiliser qu'une seule fois : dans le script principal), et pour la balise META tu en as déjà une de correcte, si je me souviens bien. Smiley smile
Salut !

J'ai eu le meme probleme que toi, et j'ai trouvé la solution Smiley lol . En fait c'est peut-etre (surement) expliqué dans les explications données ci-dessus, mais si tu n'as toujours pas compris, le fait est que les logiciels de programmations n'enregistrent pas les fichiers avec le meme encodage, et si tu utilise ce fichier nouvellement enregistré pour y inclure une fonction php, il n'y aura pas de balise http, comme l'entete.

En simple : tu passeras d'un encodage a un autre durant la navigation de ton application web.

Le truc bidon a faire, c'est enregistrer tes fichiers d'application avec le meme logiciel.

Mon erreur a moi : j'ai créé le fichier avec notepad (ou un autre programme bidon), ça a fait de la merde, j'ai copié le contenu dans un fichier créer avec dreamweaver je l'ai enregistré sous le meme nom et j'ai supprimé l'autre, et tadamm Smiley biggrin c'est magique ! Smiley lol

Apres, il faut se trouver un logiciel adequat.
Bonjour,

En lisant l'ensemble des réponses qui n'ont pas solutionné mon problème, ma question est en fait très simple : dans php/mysql 5.0, faut-il écrire avec des accents comme "é" ou en code comme "é" ?
Bonjour,

Chaque problème est spécifique. Merci de créer un nouveau sujet pour le votre.
Par ailleurs, on n'écrira jamais délibérément «Ã©»: on écrira soit directement les caractères, ou bien on écrira les caractères non ASCII sous la forme d'entités HTML (ex: &eacute;).

Voir la FAQ du forum:
http://forum.alsacreations.com/faq/faq-78-.html