Bonjour,

Mon cas est très simple :

Fichier html, avec déclaration d'encodage en en-tête (utf-8) : aucun problème

Je rajouter une ligne de PHP ( un include pour un menu qui s'affiche sur chaque page ), et là c'est le drame, le site ne s'affiche plus en utf-8 mais en iso, caractère spéciaux non valide ...

Je n'arrive pas à comprendre pourquoi le fait d'insérer du php compromet ma déclaration d'encodage.

Merci à vous !! =)
Bonjour,

snow_white a écrit :

Je n'arrive pas à comprendre pourquoi le fait d'insérer du php compromet ma déclaration d'encodage.


parce que chacun des fichiers textes que tu crées pour ton site internet possède lui aussi un encodage qu'il faut bien définir dans ton éditeur de texte.
Salut,

que dis le navigateur? affichage -> encodage des caractéres sous firefox.
tes caractéres spéciaux sont de l'iso interpreté en utf-8 ou vice-versa?

tu le sais peut-être, les éditeurs encodes les programmes sources.

il faut donc bien faire attention a manipulé des fichiers qui sont tous dans la même version.
peut-être le code que tu inclus a lui été edité sous iso-8859-1 ou windows-1252.

sinon n'as tu pas inclus un fichier qui remodifies le meta ou le header charset?

où encore ( les possibilités ne manquent pas ) recuperes tu avec ton menu des données venant d'une base de données non utf-8.

Pascal
Bonjour,

Je n'utilise pas de BDD, j'utilise juste l'include de php pour inclure un menu, et éviter ainsi de le taper en html sur chaque page.

Je code sous Notepad ++, je l'ai spécifié UTF8 sans BOM, aucun pb

En en-tête de mon fichier dans le quel je met l'include, j'ai mis :

<meta http-equiv="Content-Type" content="text/plain; charset=utf-8" />

Donc ce n'est pas ça non plus :s

Tous mes fichiers sont en UTF-8, ma déclaration est en UTF-8 et il n'y a pas de 2eme déclaration dans le fichier que j'inclue, c'est un simple <div> avec un menu dedans.


EDIT : En fait tout est bien codé en UTF-8, le pb c'est que le navigateur semble ne plus le comprendre, et affiche par défaut en ISO.
Si je passe manuellement le navigateur en UTF, sa marche .
Modifié par snow_white (06 Apr 2010 - 15:55)
en tête de ton fichier en PHP

essai avant tout affichage de quelque sorte que ce soit.

header('Content-type: text/html; charset=UTF-8'); 


edit: je vois que tu mets text/plain tu as choisi exprès? c'est pour du web pas pour un mail?

peut-être que cette commande sera un peu plus autoritaire que de le meta.

sinon la tout de suite je ne vois pas trop.

Pascal
Modifié par CPascal (06 Apr 2010 - 16:08)
ça aussi j'ai essayé : sans succès Smiley decu


non non le text/plain c'est une erreur, jai mis html ^^
Modifié par snow_white (06 Apr 2010 - 16:09)
Bonjour,

Dans ce cas il n'y a plus qu'une seule possibilité. Il y un entête http qui dit qu'il faut lire ta page en iso et non en utf-8. Pour vérifier cela Firebug > réseau > entête sur le html
Et lire ligne à ligne si tu vois un moment iso au lieu de utf-8
C'est quoi firebug ?

Ce qui me choque le plus, c'est que si j'enlève la seule ligne en PHP, tout marche très bien. Donc j'en pense que c'est le PHP qui est responsable :s


Merci de vos réponses !
snow_white a écrit :
Ce qui me choque le plus, c'est que si j'enlève la seule ligne en PHP, tout marche très bien


tu parles du include? si oui c'est une ligne qui peut en cacher potentiellement un bon nombre.

tu pourrais nous montrer du code?

firebug est un plugin de firefox. ça s'installe trés facilement. tu tapes firebug dans ton navigateur firefox sous google et tu trouves un lien te proposant une installation et ça va le faire.

firebug est ultra-puissant pour debuggé un site. il te permet d'inspecter les styles , le html, de faire des changements dedans "à la volée", de voir les appels au divers éléments, le temps de chargement de ces appels, etc... etc...

dans firefox il y a pleins de plugins comme çà qui facilite le travail des developpeurs. Ne passes pas a coté surtout.
Je connaissais déja le W3C validator, mais pas le Firebug.

Je viens de tester mon code en local ( sous WAMP ) et le pb d'encodage n'existe pas !
Donc, je dis bien peut etre, que c'est le serveur en ligne , l'interpréteur PHP ou Apache qui impose la lecture en ISO-8859-1 à la place de l'UTF-8 ....

Voici mon code :

Extrait du code de Index.php, ou je vais inclure le menu :

 
<!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">
	<head>
		<title></title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
(.......)
<?php include("menu_inc.html");?>
(........)


Et le code du fameux menu_inc.html :

<div id="menu">
	<div id="accueil"><a href="./accueil.html">Accueil</a></div>
	(...................)							
</div>



Quelque chose de très basique en somme...


Merci de votre aide encore une fois !
Modifié par snow_white (07 Apr 2010 - 10:54)
Alors !
J'ai essayé de mettre cette ligne en tout début de code :
header('Content-type: text/html; charset=UTF-8');

J'avais essayé hier, ça ne marchait pas, pour une raison que j'ignore, aujourd'hui ça marche ! Mon serveur en ligne été configuré par défaut pr lire en ISO-8859-1 ( interpréteur PHP ou apache je ne sais pas ) et cette ligne force la lecture en UTF-8.

Merci à tous de votre aide, et longue vie a Alsa Créations !