Page 1 sur 1

Erreur Header lors d'une conversion en UTF-8 ?

Publié : 22 août 2005, 14:12
par GizMecano
Hello,

En bidouillant un projet en cours, je me suis décidé à le passer entièrement en UTF-8 à la place de l'ISO.

Je recharge la page, et voilà que j'obtiens la fameuse erreur Cannot modify header information alors que je n'ai rien modifié dans le contenu des fichiers en dehors de l'encodage, et que par ailleurs, je n'utilise pas de fonction header.

J'ai revérifié les fichiers avec mes sauvegardes, je ne vois aucune différence, en dehors du fait que le cookie refuse de s'installer. Et que ce satané message s'écrive, bien entendu :cry:

Au cas où quelqu'un veuille bien me donner une piste, ma page commence, dès le tout début par (ligne 3, après un commentaire) :

Code : Tout sélectionner

require("langues/langue.php"); 
Et le script en question est :

Code : Tout sélectionner

	if(isset($_COOKIE_['langue']))
		{$langue = $_COOKIE['langue'];} 
	else
		{$langue = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);}
	switch($langue)	{
		case 'en':
		case 'fr':
			include($langue.'/interface.php');
			break;
	default:
			include('fr/interface.php');
			break;
	}
$expire = +60*60*24*30; 
setcookie("langue", $langue, time() + $expire);
Pour plus de précision, en enlevant le chemin complet des fichiers, l'erreur indiquée est la suivante :
Firefox a écrit :Warning: Cannot modify header information - headers already sent by (output started at c:\6.0.0\index.php:1) in c:\6.0.0\langues\langue.php on line 21
D'avance, merci pour toutes pistes...

Ciao,

Publié : 22 août 2005, 14:53
par chBok
Il faut que ta fonction setcookie() soit appelée avant tout autre entête (espace vierge, texte, fonction header())

Publié : 22 août 2005, 15:01
par Bobe
C’est sùrement une erreur dùe au BOM, vérifie si ton éditeur peut encodé les fichiers en utf-8 sans pour autant leur ajouter le BOM.

Publié : 22 août 2005, 20:25
par GizMecano
Hello,
chBok a écrit :Il faut que ta fonction setcookie() soit appelée avant tout autre entête (...)
C'est bien le cas, non :?:

D'ailleurs, ne parlais je pas du fameux message d'erreur... Je m'étais déjà planté sur ce point avant... :wink:
Bobe a écrit :C’est sùrement une erreur dùe au BOM, vérifie si ton éditeur peut encodé les fichiers en utf-8 sans pour autant leur ajouter le BOM.
Là, tu marque un point. 8)

J'ai repassé les fichiers en ANSI pour voir, et plus d'erreur : tout baigne.

Ensuite, j'ai découvert dans NotePad ++ les deux formats UTF, normal et sans ce BOM, dont je n'avais jamais entendu parler avant.

Et là, je coince, parce que visiblement, il ne s'agit que d'une option : que j'enregistre avec ou sans le BOM, visiblement, ça coince... :(

Peut-être est-ce que ça vient du logiciel :?:

Peut-être que mes fichiers restent codés avec le BOM désormais, quoique je change :?:

Bon, je suis rassuré de savoir que ça semble bien être un problème dû à l'encodage, mais j'avoue que je reste vraiment dubitatif sur la solution à donner à ce problème.

Merci encore,

Ciao,

Publié : 22 août 2005, 22:28
par chBok
Perso, j'utilise Unired qui est un éditeur sympa, sauf que je trouve dommage que le projet se soit arrêté car il resterait pleins d'améliorations à lui apporter.

PS : si tu avais des informations BOM en préfixe, c'est que tu avais donc des caractères envoyés au navigateur avant l'appel de la fonction setcookie(). Il fallait juste le savoir :D

Publié : 23 août 2005, 09:14
par GizMecano
Hello,
chBok a écrit :Perso, j'utilise Unired qui est un éditeur sympa [...].
Je l'avais testé, mais j'avoue que je l'avais trouvé un peu trop rustique, malgré ses qualités.
chBok a écrit :si tu avais des informations BOM en préfixe, c'est que tu avais donc des caractères envoyés au navigateur avant l'appel de la fonction [...]
Effectivement.

En fait, je crois avoir compris comment NotePad ++ doit être utiliser : la fonction UTF-8 sans BOM est seulement un affichage, pas un mode d'enregistrement.

Il suffit donc de faire attention à l'affichage avant de coller du texte, et tout semble fonctionner correctement. 8)

Le mieux dans cette histoire, c'est que je n'ai même plus besoin d'ajouter des slashs à répétition, vu que l'apostrophe arrondie est considérée comme un caractère différent de l'apostrophe droite. Le texte est nickel et le validateur, tout comme moi, est très content :wink:

Ciao,