Partage
  • Partager sur Facebook
  • Partager sur Twitter

Différence entre UTF-8 et UTF-8 sans BOM

Sujet résolu
8 juillet 2009 à 10:19:59

Bonjour,

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


Autre question, lorsque je test en local avec wamp, les caractéres spéciaux comme é, à, ù (converti en UTF-8)s'affiche correctement. Et quand je ne mets sur mon hébergeur c'est transformé en é, Ã, ... (enfin juste sous Mozilla firefox)

Merci par avance de vos réponse,

Mickael
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
8 juillet 2009 à 10:30:23

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 :

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


En espérant t'avoir aidé,
Cyrix
  • Partager sur Facebook
  • Partager sur Twitter
8 juillet 2009 à 10:45:51

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.

Enfin,c'est ce que j'ai lu une fois
  • Partager sur Facebook
  • Partager sur Twitter
8 juillet 2009 à 11:53:51

Citation : Cyrix

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.
  • Partager sur Facebook
  • Partager sur Twitter
8 juillet 2009 à 12:01:27

@Cyrix: :waw: 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.


Tracker.
  • Partager sur Facebook
  • Partager sur Twitter
8 juillet 2009 à 12:57:01

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
  • Partager sur Facebook
  • Partager sur Twitter
8 juillet 2009 à 13:56:35

Simplement parce qu'UTF-8 support plus de caractères...

[ tous ? ]
Probablement tout ceux que tu pourrais éventuellement avoir de besoin
pour un site multilingue.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
8 juillet 2009 à 14:15:42

Sujet résolu ? Merci de le valider via le bouton en bas de la page ;)
  • Partager sur Facebook
  • Partager sur Twitter
8 juillet 2009 à 15:52:12

Citation : Cyrix

Sujet résolu ? Merci de le valider via le bouton en bas de la page ;)



Le SDZ a un nouveau concierge...
Bienvenue et applaudissements :-°


Tracker...
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
8 juillet 2009 à 15:57:32

Citation : Tracker

Citation : Cyrix

Sujet résolu ? Merci de le valider via le bouton en bas de la page ;)



Le SDZ a un nouveau concierge...
Bienvenue et applaudissements :-°


Tracker...


Non, c'est juste que si tu lisais un peu, tu aurais compris => http://www.siteduzero.com/forum-83-420 [...] orum-php.html
  • Partager sur Facebook
  • Partager sur Twitter
8 juillet 2009 à 16:18:36

Citation : Cyrix

Non, c'est juste que si tu lisais un peu, tu aurais compris => http://www.siteduzero.com/forum-83-420 [...] orum-php.html



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.


Tracker.
  • Partager sur Facebook
  • Partager sur Twitter
8 juillet 2009 à 18:23:34

UTF8 : utf8, mais envoie des octets au navigateur dès le début, donc certaines fonctions ne vont pas marcher

utf8 sans bom : n'envoie pas ces octets
  • Partager sur Facebook
  • Partager sur Twitter
8 juillet 2009 à 20:49:14

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.

Mickael
  • Partager sur Facebook
  • Partager sur Twitter