Tout est dans le titre, je voulais savoir quel est la différence entre les deux car quand je converti en UTF-8 j'ai l'erreur suivante, alors que je ne l'ai pas en UTF-8 sans BOM!
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/virtual/**********.biz/htdocs/recommande0.php:1) in /var/www/virtual/***********.biz/htdocs/recommande0.php on line 2
Salut !
L'UTF-8 sans BOM ne va vraiment te servir que si tu n'as pas de balise mêta qui dit que tu codes ton document en UTF-8. Après, le BOM va te servir de définition du document si tu veux.
Au cas où, il est préférable d'encoder en UTF-8 sans BOM au risque qu'aucune balise mêta n'a été déclarée, mais bon ... c'est vraiment pas obligatoire le sans BOM.
Personnellement, j'utilise pas le BOM, je me fais juste de l'UTF-8 "basique".
Pour ton erreur, as-tu bien défini la fonction session_start() avant tout autre code ? As-tu bien vérifié qu'il n'y avait pas d'espace libre devant la balise d'ouverture PHP (<?php ...) ? ...
C'est tout à fait normal que chez un autre serveur sa foire. Entre les balises <head> et </head>, il faut que tu rajoutes cette ligne :
Salut, pour ton erreur,je crois que quand tu mets utf-8 simple,celà rajoute des espaces ou une ligne avant ton code,ce qui fait que les fonctions modifiants les entête comme session_start ou setcookies te renverront cette erreur,car il y aura eu affichage avant l'appel de ces fonctions.
Salut !
L'UTF-8 sans BOM ne va vraiment te servir que si tu n'as pas de balise mêta qui dit que tu codes ton document en UTF-8. Après, le BOM va te servir de définition du document si tu veux.
Ce qu'il ne faut pas entendre (enfin lire) --'
Le BOM (Byte Order Mark) est un caractère espace insécable de largeur nulle. D'où quand tu affiches une page qui contient le BOM (un caractère invisible qui vient en toute première position du document donc) tu ne pourras pas utiliser de fonctions modifiant les entêtes sous peine d'avoir cette erreur (comme l'a dit elscorto) puisque même si on ne le voit pas, le BOM lui est déjà affiché.
D'où l'intérêt, si on encode son document en UTF-8, de toujours le faire sans BOM, histoire de ne jamais avoir ce genre de surprise.
@Cyrix: Les balises méta http-equi sont totalement inutiles dans le cadre d'une utilisation d'un langage de script comme php permettant de définir le header http par code.
BOM (Byte Order Mark), c'est simplement une serie d'octets (normalisés http://en.wikipedia.org/wiki/Byte-order_mark ) ajoutés au début d'un fichier texte permettant de définir l'encodage de son contenu (unicode oblige). L'interpréteur php ne tient pas compte de ces informations pour l'encodage mais les laisse sortir comme caractères de réponse rendant du coup l'écriture des header http impossible (d'ou le plantage du session start => cookie de session). C'est pour ça qu'il faut vire le BOM en php.
Merci de vos réponses.
N'obtenant pas les memes résultats sur IE et mozilla, j'ai essayé en ANSI et la ca marche nikel, pas d'erreur, et les caractéres s'affichent correctement!
C'est pourquoi il me vient cette question:
Pourquoi convertir en UTF-8 si ca fonctionne en ANSI?
Mickael
C'est vraiment trop beau ce que tu fais. L'humanité un jour te remerciera.
Cela dit au lieu de poster dans tous les sens (à l'affut du post à cloturer), fais des réponses potables ou poste pas.
Désolé de ne pas avoir marqué le sujet résolu, c'est juste parceque je voulais avoir la réponse sur pourquoi UTF-8 et pas ANSI.
En tout merci à tous pour vos précisions.