OVH Cloud OVH Cloud

[formulaires] UTF-8 et iso-8859-1

7 réponses
Avatar
Remy Belleau
Bonjour,

Débutant en php, j'ai utilisé et adapté un script de form2mail qui
fonctionne correctement.
Cependant, sur un serveur (amen.fr) les messages arrivent comme ceci :
/Votre message nous a bien été envoyé le 27/01/2006 à 18:08./
et sur free.fr, comme ceci :
/Votre message nous a bien été envoyé le 30/01/2006 à 13:27./
Comment éviter cette incorrection ?

Merci de votre aide.
Cordialement
@ bientôt,
Rémy Belleau
remybelleau@phree.fr (free)
======
« L'informatique n'est pas plus la science de l'ordinateur
« que l'astronomie n'est celle du télescope »
Edsger Dijkstra.

7 réponses

Avatar
loufoque

Comment éviter cette incorrection ?


En précisant le codage de la page contenant ton formulaire, ainsi que de
celle qui affiche les données.

Avatar
Olivier Miakinen

Débutant en php, j'ai utilisé et adapté un script de form2mail qui
fonctionne correctement.
Cependant, sur un serveur (amen.fr) les messages arrivent comme ceci :
/Votre message nous a bien été envoyé le 27/01/2006 à 18:08./
et sur free.fr, comme ceci :
/Votre message nous a bien été envoyé le 30/01/2006 à 13:27./
Comment éviter cette incorrection ?


1) Bien identifier la table de caractères utilisée pour envoyer les
messages¹. Cela pourrait être ISO-8859-1 chez Amen et UTF-8 chez Free.

2) Insérer les *trois* entêtes indispensables.

Exemple 1 :

MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit

Exemple 2 :

MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit


¹ Avant toute chose, lire ceci (aucune excuse, comme il dit) :
http://french.joelonsoftware.com/Articles/Unicode.html

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
ASM

¹ Avant toute chose, lire ceci (aucune excuse, comme il dit) :
http://french.joelonsoftware.com/Articles/Unicode.html


Et se méfier de l'encodage BIBI
http://fr.wikipedia.org/wiki/Syst%C3%A8me_bibi-binaire
:-)


--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Remy Belleau

2) Insérer les *trois* entêtes indispensables.


A toutes fins utiles, voici mon code :
http://remybelleau.free.fr/form/


--
Rémy Belleau
(free)
===== « L'informatique n'est pas plus la science de l'ordinateur
« que l'astronomie n'est celle du télescope »
Edsger Dijkstra.

Avatar
Remy Belleau

2) Insérer les *trois* entêtes indispensables.

Exemple 1 :

MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit


OK. Dois-je insérer ces entêtes dans le code HTML qui appelle le
contrôle du formulaire (<form action="envoi.php ... >)ou dans ce dernier
(envoi.php) ?

Rappel : ce sont mes premiers pas en PHP

¹ Avant toute chose, lire ceci (aucune excuse, comme il dit) :
http://french.joelonsoftware.com/Articles/Unicode.html

Vu, merci.


Et merci pour l'aide.
Cordialement

--
Rémy Belleau
(free)
===== « L'informatique n'est pas plus la science de l'ordinateur
« que l'astronomie n'est celle du télescope »
Edsger Dijkstra.

Avatar
Olivier Miakinen


2) Insérer les *trois* entêtes indispensables.



<cit. headers[http://remybelleau.free.fr/form/]>

En-têtes HTTP (réponses) - http://remybelleau.free.fr/form/

Age: 7
Date: Tue, 31 Jan 2006 14:24:58 GMT
Content-Length: 7551
Content-Type: text/html
Server: Apache/ProXad [Jan 16 2006 02:48:10]
Last-Modified: Tue, 31 Jan 2006 13:10:25 GMT
Etag: "2863e0-1d7f-43df61c1"
Via: 1.1 proxy1 (NetCache NetApp/6.0.2), 1.0 bahamas.frcl.bull.fr:3128
(Apache/1.3.6)

200 OK

</cit.>

Déjà, tu peux rajouter une instruction :
header("Content-Type: text/html; charset=UTF-8");
au début de ton script.


<cit. contents[http://remybelleau.free.fr/form/]>
<?xml version="1.0" encoding="iso-8859-1"?>
[...]
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Transfert-Encoding"
content="Content-Transfer-Encoding: 8bit" />
</cit.>

Tu peux aussi remplacer « iso-8859-1 » par « UTF-8 » aux deux endroits
ci-dessus, virer le meta « Content-Transfert-Encoding » dont tout le
monde se fout, et réécrire les quelques accents en UTF-8 (je n'en ai vu
que dans « Données effacées »).

Exemple 1 :

MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit


OK. Dois-je insérer ces entêtes dans le code HTML qui appelle le
contrôle du formulaire (<form action="envoi.php ... >)ou dans ce dernier
(envoi.php) ?


Oh, tu préfères iso-8859-1 ? Libre à toi. Oublie donc ce que j'ai écrit
ci-dessus concernant la transformation de iso-8859-1 en UTF-8. Tu as
juste à rajouter l'instruction header() qui va bien (c.-à-d. avec
charset=iso-8859-1), et à virer le meta inutile.

Pour en revenir à ta dernière question, ces entêtes sont ceux du
courriel envoyé. Tu dois donc les mettre à côté des entêtes « From »,
« To », « Cc », « Subject », etc. (voir dans le code la fonction qui
envoie le mail).

Rappel : ce sont mes premiers pas en PHP


Bienvenue chez les fous. ©


Cordialement,
--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)


Avatar
Remy Belleau

Bienvenue chez les fous. ©

Merci pour tout, je vais décortiquer ;)

@+
Cordialement
--
Rémy Belleau
(free)
===== « L'informatique n'est pas plus la science de l'ordinateur
« que l'astronomie n'est celle du télescope »
Edsger Dijkstra.