• [^] # Re: header

    Posté par . En réponse au message UTF-8. Évalué à 2.

    Et pour être un peu plus précis :

    Par défaut apache envoie les pages html codées en iso-8859-1 by-passant l'information du charset de celle-ci contenue dans la balise meta, par ex. :
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />

    Cela provient du paramètre :

    AddDefaultCharset ISO-8859-1

    situé dans le fichier /etc/apache2/conf/commonapache2.conf

    Il faut donc commenter cette ligne pour "forcer" les navigateur à utiliser le charset contenu dans la balise meta de la page et ne pas se fier à l'entête HTTP.

    En fait, la norme HTTP 1.1 dit que les navigateurs DOIVENT respecter le codage indiqué par l'entête HTTP. Donc Opera et Mozilla respectent bien la norme.

    Pour avoir le codage UTF-8 bien détecté par ces navigateurs sur un serveur sur lequel il n'est pas possible de modifier les fichier de config d'apache:

    Soit l'on peut écraser la configuration initiale du serveur sur un site donné en créant dans le répertoire principal un fichier .htacces contenant : AddDefaultCharset UTF-8

    Soit il faut indiquer explicitement l'encodage utilisé avec la fonction "header()" de PHP.

    Pour du XHTML avec encodage UTF-8, ça donne comme première ligne de chaque script PHP : header("Content-type : application/xhtml+xml ; charset=utf-8") ;

    Mais le Content-type "application/xhtml+xml" faisant planter Microsoft Internet Explorer (ah ah), on peut servir le XHTML avec : header("Content-type : text/html ; charset=utf-8") ; mais attention, "text/html" est officiellement déconseillé par le W3C dans le cas du XHTML.

    (sources diverses compilées à partir du net)

    Personnellement je trouve la solution du .htaccess bien pratique...

    en espèrant que ça aide