OVH Cloud OVH Cloud

Encodage - encore !

10 réponses
Avatar
romer
Bonjour,

J'aurais aimé posé une ou deux questions sur les déclarations d'encodage
mises dans l'en-tête de plusieurs sites dont les fichiers ont
l'extension .php

J'utilise cet en-tête :

<!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" xml:lang="fr">

<head>
<title><?php echo"Mon site - ".$_GET ['page'];?></title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
...

et ça marche quand les sites est hébergé par Free et en local chez moi
avec serveur Apache. Mais sur un autre serveur (de l'éducation nationale
- sans doute Windows) j'obtiens une bouillie de chat telle qu'on peut se
l'imaginer quand l'encodege ne convient pas.
Je suis obligé alors d'ajouter en 1re ligne du fichier :

<?php header("Content-Type: text/html; charset=UTF-8");?>

Et là tout passse bien.

Pourquoi cette différence de traitement ? Pourquoi avoir deux fois
charset=UTF-8 ? Une seule fois ne suffirait pas ?

--
A+

Romer

10 réponses

Avatar
Patrick Mevzek
Le Sat, 24 Jun 2006 14:05:48 +0200, Bernd a écrit :
Je suis obligé alors d'ajouter en 1re ligne du fichier :

<?php header("Content-Type: text/html; charset=UTF-8");?>

Et là tout passse bien.

Pourquoi cette différence de traitement ?



Content-Type est la seule bonne façon de faire.
C'est la ligne meta qui ne sert à rien, que vous pouvez supprimer.

--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
<http://www.dotandco.net/ressources/icann_registrars/index>
Avatar
romer
Patrick Mevzek wrote:

> Je suis obligé alors d'ajouter en 1re ligne du fichier :
>
> <?php header("Content-Type: text/html; charset=UTF-8");?>
>
> Et là tout passse bien.
>
> Pourquoi cette différence de traitement ?

Content-Type est la seule bonne façon de faire.
C'est la ligne meta qui ne sert à rien, que vous pouvez supprimer.



Thanks. Je vais la supprimer sur tous les sites et on va bien voir.
--
A+

Romer
Avatar
Le Fou
Patrick Mevzek a écrit :
Bernd a écrit :
> Je suis obligé alors d'ajouter en 1re ligne du fichier :
> <?php header("Content-Type: text/html; charset=UTF-8");?>
> Et là tout passse bien.
> Pourquoi cette différence de traitement ?

Content-Type est la seule bonne façon de faire.
C'est la ligne meta qui ne sert à rien, que vous pouvez supprimer.



Bernd avait demandé :
"Pourquoi cette différence de traitement ?"
En clair, pourquoi certains serveurs se contentent de la balise META et
d'autres nécessitent un "Content-Type... charset..." ?

--
A'tchao

Le Fou
http://gloupclub.free.fr/
http://www.ffessm-cd84.com/
http://ehiller.club.fr/
Avatar
Olivier Miakinen
Le 24/06/2006 19:40, Le Fou a écrit :

> Je suis obligé alors d'ajouter en 1re ligne du fichier :
> <?php header("Content-Type: text/html; charset=UTF-8");?>
> Et là tout passse bien.
> Pourquoi cette différence de traitement ?



Content-Type est la seule bonne façon de faire.
C'est la ligne meta qui ne sert à rien, que vous pouvez supprimer.



Bernd avait demandé :
"Pourquoi cette différence de traitement ?"
En clair, pourquoi certains serveurs se contentent de la balise META et
d'autres nécessitent un "Content-Type... charset..." ?



Et la réponse est probablement que certains serveurs envoient déjà un
"Content-Type... charset..." quand on ne le précise pas dans une
fonction header(), et sans doute qu'ils le positionnent à autre chose
que UTF-8. Comme les entêtes HTTP sont prioritaires sur la balise META,
ce sont eux qui gagnent.
Avatar
Le Fou
Olivier Miakinen a écrit :
Le Fou a écrit :
> Bernd avait demandé :
> "Pourquoi cette différence de traitement ?"
> En clair, pourquoi certains serveurs se contentent de la balise META et
> d'autres nécessitent un "Content-Type... charset..." ?

Et la réponse est probablement que certains serveurs envoient déjà un
"Content-Type... charset..." quand on ne le précise pas dans une
fonction header(), et sans doute qu'ils le positionnent à autre chose
que UTF-8. Comme les entêtes HTTP sont prioritaires sur la balise META,
ce sont eux qui gagnent.



C'est "probablement" un fonctionnement possible et je vais "sans doute" me
contenter de cette réponse ;-)

--
A'tchao

Le Fou
http://gloupclub.free.fr/
http://www.ffessm-cd84.com/
http://ehiller.club.fr/
Avatar
Olivier Miakinen
Le 25/06/2006 19:28, Le Fou a écrit :

> "Pourquoi cette différence de traitement ?"



Et la réponse est probablement que [...]



C'est "probablement" un fonctionnement possible et je vais "sans doute" me
contenter de cette réponse ;-)



;-)

Si tu veux avoir une réponse sans « probablement », il faut juste que
Bernd nous indique deux URL vers des scripts en PHP sans header(), un
sur chacun des deux serveurs (Free d'une part, celui de l'É.N. d'autre
part). Alors on pourra savoir ce qui est vraiment envoyé comme entêtes
HTTP dans chacun des deux cas.
Avatar
romer
Olivier Miakinen <om+ wrote:

Si tu veux avoir une réponse sans « probablement », il faut juste que
Bernd nous indique deux URL vers des scripts en PHP sans header(), un
sur chacun des deux serveurs (Free d'une part, celui de l'É.N. d'autre
part). Alors on pourra savoir ce qui est vraiment envoyé comme entêtes
HTTP dans chacun des deux cas.



Dommage - C'était faisable en effet mais depuis les dernières réponses,
j'ai tout modifié dans le head et dans l'en-tête aussi bien sur les 2
serveurs qu'en local. Et comme cela porte sur des ligne assez
imbitables, je ne souviens évidemment plus ce qu'il y avait exactement
au début.
Qu'en qu'il en soit tout fonctionne bien - Merci de vos contributions.

--
A+

Romer
Avatar
leloo10
Patrick Mevzek a écrit
Content-Type est la seule bonne façon de faire.
C'est la ligne meta qui ne sert à rien, que vous pouvez supprimer.



Oui, mais, comment fait-on si l'on utilise pas PHP (bête HTML4) et un
serveur en mutualisé sur lequel on n'a pas de contrôle ?
Merci

Leeloo
Avatar
Pierre Goiffon
leloo10 wrote:
Content-Type est la seule bonne façon de faire.
C'est la ligne meta qui ne sert à rien, que vous pouvez supprimer.



Oui, mais, comment fait-on si l'on utilise pas PHP (bête HTML4) et un
serveur en mutualisé sur lequel on n'a pas de contrôle ?



Ca dépend du serveur...

Voir ce document qui détaille quelques méthodes :
"Le paramètre HTTP Charset"
http://www.w3.org/International/O-HTTP-charset
Avatar
Olivier Miakinen
Le 26/06/2006 09:41, Pierre Goiffon a écrit :

Content-Type est la seule bonne façon de faire.
C'est la ligne meta qui ne sert à rien, que vous pouvez supprimer.



Oui, mais, comment fait-on si l'on utilise pas PHP (bête HTML4) et un
serveur en mutualisé sur lequel on n'a pas de contrôle ?



Ca dépend du serveur...

Voir ce document qui détaille quelques méthodes :
"Le paramètre HTTP Charset"
http://www.w3.org/International/O-HTTP-charset



Et si tout ça ne marche pas on peut, dans l'ordre :
1) Râler auprès de l'hébergeur pour qu'il permette au moins l'une de
ces méthodes ; au besoin lui transmettre l'article de Joël Spolsky¹
pour le sensibiliser au fait que c'est un besoin indispensable ;
2) Changer d'hébergeur.
____
¹ http://french.joelonsoftware.com/Articles/Unicode.html