OVH Cloud OVH Cloud

Le bon charset...

166 réponses
Avatar
METIS
Bonjour,
comme je ne suis pas un codeur fou, j'utilise Dreamweaver pour composer mes
pages (et non pas Bloc-notes(;o))).
Par défaut, le charset est...
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Est-ce que c'est pertinent (en général) ?
Vous allez me dire que ça dépend...?
(;o)))))))))

--
<|[;o)) METIS
http://www.graphM.com
Pour m'écrire en privé,
moi c'est metis15 et
je tourne à l'Oranges...

10 réponses

Avatar
Olivier Miakinen
Le 15/12/2008 14:22, METIS a écrit :

Qu'est-ce que c'est ? ©
http://www.coucoucircus.org/series/generique.php?id91



Skype, MSN messenger et autres...(;o))))))))))



Moi pas connaître. Pour discuter à distance je connais le courriel, les
groupes de nouvelles, et le téléphone.
Avatar
Laurent vilday
METIS :

Bon, je suis complètement perdu avec tout ce qui a été dit dans ce fil.


[...]
Ca parle pas de charset...Désolé, je sens que je fatigue mes
supporter...(;o))))))



Tout a été plus ou moins dit. Il me semble que la discussion ne pourra
pas aller beaucoup plus loin désormais sans les lignes de codes qui te
posent problème(s). N'oublies pas de censurer (remplacer par XXXXX par
exemple) TOUTES les informations sensibles avant (email, login,
password, host, dbname, etc.)

--
laurent
Avatar
Olivier Miakinen
[ diapublication, suivi vers fr.usenet.8bits ]

Le 15/12/2008 14:11, Pascale a écrit :

... et de ¤, ½ et ¼ ? Je veux voir ! Tu as une URL avec l'un de ces
trois caractères ?



Non non, ce ne sont pas des fractions, mais des oe (avec la ligature, en
majuscule et minuscule.



Je n'avais pas écrit des fractions, mais un euro, une ligature oe et une
ligature OE, le tout en ISO-8859-15. Visiblement ton logiciel ne sait
pas plus lire ce charset que le générer.

Il n'y a aucun charset déclaré dans ton article, mais je soupçonne que
c'est aussi Windows-1252. Je vérifierai plus tard, après avoir amené
ma fille à l'école.





C'est confirmé.

Par défaut, Xnews utilise en effet Windows-1252. Mais j'utilise Mime-Proxy,
donc il ne devrait pas y avoir de problèmes.
Il est configuré comme suit :
---------------------------------
[misc]
socket_buffer_capacity = 2048
max_managed_sockets = 128
fork_connection = 0
max_child = 25

[proxies]
news_free = 10, news.free.fr, 119, nntp
smtp_free = 11, smtp.free.fr, 25, smtp

[default]
charsets = us-ascii, iso-8859-1, iso-8859-15
header_charset = iso-8859-1
client_charset = windows-1252
client_decoding_charset = windows-1252
encoding = 1
decoding = 1
encoded_word = 0
incoming_encoded_word = 0
xover_decoding = 1
user_agent = 1
xover_decoding = 1
encode_to_qp = 0
encode_to_b64 = 0
unknown_character = ?
default_charset = iso-8859-15
enable_incoming_yEncode = 0
enable_outgoing_yEncode = 0
ip = 127.0.0.1
date = 0
enable_mime_proxy_header = 0
original_ip_header = 0
original_ip_reverse = 0
---------------------------------
et c'est bien le port 10 qui est déclaré dans Xnews.



Je laisse tout ceci, et je fais suivre dans fr.usenet.8bits pour étude
par les experts de Xnews et Mime-Proxy. Finalement, le premier titre
n'était pas mal, je l'ai repris !
Avatar
METIS
Laurent vilday wrote:
METIS :

Bon, je suis complètement perdu avec tout ce qui a été dit dans
ce fil. [...] Ca parle pas de charset...Désolé, je sens que je
fatigue mes supporter...(;o))))))



Tout a été plus ou moins dit. Il me semble que la discussion ne
pourra pas aller beaucoup plus loin désormais sans les lignes de
codes qui te posent problème(s).



Bon, j'ai déjà posté ces codes mais cette discussion est tellement longue
qu'on s'y perd.
On m'a dit qu'il fallait déclarer le même charset partout, y compris dans
l'entête HTTP.
Mais moi, avec mes hébergements mutualisés OVH, je n'ai pas accès
directement à l'entête HTTP, ou alors je ne sais pas y aller.

Je résume le(s) problème(s) :
- Faire en sorte que ce form envoit les infos par email, sans problème
d'accents et symboles.
- Faire en sorte que ces envois soient à peu près sûrs (il m'a été dit que
c'était pas bon du tout de ce côté là !) mais avec le captcha pour le
moment, j'ai pas vraiment de problème.

Alors revoici les codes :

_contact.php_
<!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" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>xxxxx</title>
[...]
<form action="envoi.php" method="post" name="forminfo" class="styleform">
<p>Nom<br />
<input name="nom" type="text" id="nom" />
<br />
Pr&eacute;nom<br />
<input name="prenom" type="text" id="prenomnom" />
<br />
Email<br />
<input name="email" type="text" id="email">
<br />
T&eacute;l&eacute;phone<br />
<input name="telephone" type="text" id="telephone">
<br />
Objet<br />
<!--<input name="objet" type="text" id="objet" value="" />-->
<textarea name="objet" cols="70" rows="8"></textarea>
<br />
Dispositif anti-robots : pour des raisons de s&eacute;curit&eacute; et pour
prot&eacute;ger vos donn&eacute;es personnelles, recopiez le code
affich&eacute; ci-dessous avant d'envoyer le formulaire.<br>
<i>(Cette op&eacute;ration ne peut &ecirc;tre r&eacute;alis&eacute;e que par
un humain)</i>
<br />
<img src="captcha.php" style="vertical-align:middle;" /><br /><br />
<input type="text" name="captchaResult" size="10" /><br />
</p>
<div align="left"><br />
<input class="input_c" type="submit" name="Submit" value="Envoyer" />&nbsp;
<input class="input_c" type="reset" name="Submit" value="Réinitialiser" />
</div>
</form>
</body>
</html>

_envoi.php_
<?php
//header('Content-Type: text/html; charset=ISO-8859-1');
//header('Content-Type: text/html; charset=ISO-Latin-1');
header('Content-Type: text/html; charset=UTF-8');

extract($_POST,EXTR_OVERWRITE);
if(isset($_POST['captchaResult']))
{
session_start();
$_POST['captchaResult'] = strtolower($_POST['captchaResult']);
$_SESSION['captchaResult'] = strtolower($_SESSION['captchaResult']);
if($_POST['captchaResult'] === $_SESSION['captchaResult'])
{ //captcha OK on envoi le message
$nom=$HTTP_POST_VARS['nom'];
$mail=$HTTP_POST_VARS['mail'];

/////voici la version Mine
$headers = "MIME-Version: 1.0rn";

//////ici on détermine le mail en format texte (3 lignes neutralisees)
//$headers .= "Content-type: text/plain; charset=iso-8859-1rn";
//$headers .= "Content-type: text/plain; charset=UTF-8rn";
//$headers .= "Content-type: text/plain; charset=ISO-Latin-1rn";

////ici on détermine l'expediteur et l'adresse de réponse
$headers .= "From: $nom <$mail>rnReply-to : $nom <$mail>nX-Mailer:PHP";

$subject="Site xxxxxx Demande de contact";
$destinataire="";

$body="Contact xxxxxxnNom : $nomnPrénom : $prenomnEmail :
$emailnTéléphone : $telephonenObjet : $objet" ;
mail($destinataire,$subject,$body,$headers);
include("mercicontact.php");
}
else
{
//captcha faux
include("erreurcontact.php");
}
}
?>
-----------------------------------------

Voilà, avec ça, tout en UTF-8 (l'entête HTTP étant en UTF-8 logiquement?),
l'email que je reçois donne...

- avec OutlookExpress sous XP :

Destinataire : test é â,¬

Contact xxxxxx
Nom : test é â,¬
Prénom : test
Email : test
Téléphone : test téléphone
Objet : test

- avec ThunderBird

Destinataire : test é €

Contact xxxxxx
Nom : test é €
Prénom : test
Email : test
Téléphone : test téléphone
Objet : test

- avec le webmail d'Orange

Destinataire : "test é €" <unspecified-domain>

Contact xxxxxx
Nom : test é €
Pr�nom : test (carré = ? dans losange noir)
Email : test
T�l�phone : test téléphone
Objet : test

--
<|[;o)) METIS
http://www.graphM.com
Pour m'écrire en privé,
moi c'est metis15 et
je tourne à l'Oranges...
Avatar
Pierre Goiffon
Olivier Miakinen wrote:
Ce n'est pas possible. Un € n'a pas le même code en windows-1252 et en
ISO-8859-15, et il en va de même pour œ et Œ.



Je crois me souvenir qu'un certain nombre de navigateurs interprètent
automatiquement en windows-1252 une page déclarée comme ISO Latin-1 ?
Peut être qu'il y a des mécanismes similaires pour des pages déclarées
en ISO Latin-15 ?
Avatar
Pierre Goiffon
Olivier Miakinen wrote:
Je ne l'ai pas compris ainsi !



Et tu avais raison, ma formulation était inexacte.


(...)
Ouf ! « Plus bas », c'était même le paragraphe juste en dessous, donc
pas trop loin... ;-)



Ha tu fais référence à ta citation qui indique "CP1252 pour le
français" ? Elle m'avait échappée (oulla les vacances...)
Je pensais plutôt au paragraphe plus bas "C'est normal, puisque ce terme
est lié à la config de chaque Windows."...

Bon désolé encore une bourde :D Ca devient légion !
Avatar
TJ
On 2008-12-15, METIS wrote:
_envoi.php_
<?php
//header('Content-Type: text/html; charset=ISO-8859-1');
//header('Content-Type: text/html; charset=ISO-Latin-1');
header('Content-Type: text/html; charset=UTF-8');

extract($_POST,EXTR_OVERWRITE);
if(isset($_POST['captchaResult']))
{
session_start();
$_POST['captchaResult'] = strtolower($_POST['captchaResult']);
$_SESSION['captchaResult'] = strtolower($_SESSION['captchaResult']);
if($_POST['captchaResult'] === $_SESSION['captchaResult'])
{ //captcha OK on envoi le message
$nom=$HTTP_POST_VARS['nom'];
$mail=$HTTP_POST_VARS['mail'];

/////voici la version Mine
$headers = "MIME-Version: 1.0rn";



Pas forcément utile selon moi vu que tu n'utilise pas ce mécanisme.

//////ici on détermine le mail en format texte (3 lignes neutralisees)
//$headers .= "Content-type: text/plain; charset=iso-8859-1rn";
//$headers .= "Content-type: text/plain; charset=UTF-8rn";
//$headers .= "Content-type: text/plain; charset=ISO-Latin-1rn";



En revanche là il en manque un (UTF-8 vu que c'est ce que tu sembles
envoyer).


////ici on détermine l'expediteur et l'adresse de réponse
$headers .= "From: $nom <$mail>rnReply-to : $nom <$mail>nX-Mailer:PHP";


^^^^^^^^^^^^
Inutile, mais la vrai question est surtout as-tu compris pourquoi tu
l'as mis ?

Voilà, avec ça, tout en UTF-8 (l'entête HTTP étant en UTF-8 logiquement?),
l'email que je reçois donne...



Tu nous cites le body du mail, mais les headers sont tout autant
intéressant, surtout vu l'historique de ton « problème ».

- avec OutlookExpress sous XP :

Téléphone : test téléphone


^^^

Ton fichier envoi.php ne semble pas codé en UTF-8... Relire les posts
des différents intervenants qui t'ont expliqué *maintes* fois que
déclarer un charset ne suffisait pas, encore faut-il l'utiliser pour
*coder* ses fichiers.

- avec ThunderBird

Téléphone : test téléphone


^^^

Même souci, tu ne déclares pas de charset dans ton mail, donc le MUA
prend celui qui l'arrange (config, ou réglage par défaut), et
visiblement ici il prend de l'ISO, donc ce qui est défini par ton script
envoi.php semble (car on ne peut le vérifier au vu des éléments que tu
fournis) être de l'ISO pour la partie « en dur » du body du mail. Mais
ce que tu complètes avec les données postées est en UTF8 (car la page du
formulaire est déclarée en UTF8, donc le navigateur poste les données en
UTF8).

En espérant que cela t'aide à régler tout ça...
Avatar
TJ
On 2008-12-15, TJ <tj+ wrote:
////ici on détermine l'expediteur et l'adresse de réponse
$headers .= "From: $nom <$mail>rnReply-to : $nom <$mail>nX-Mailer:PHP";


^^^^^^^^^^^^
Inutile, mais la vrai question est surtout as-tu compris pourquoi tu
l'as mis ?



Je vois aussi qu'il semble manquer un r si on suit la même logique
pour tous les headers...

Remarque subsidiaire, à quoi sert le Reply-to: s'il est identique au
From: ?
Avatar
Olivier Miakinen
Le 15/12/2008 16:11, METIS a écrit :

On m'a dit qu'il fallait déclarer le même charset partout, y compris dans
l'entête HTTP.



On t'a surtout dit de savoir sous quel format tu sauves le fichier au
moment du File/Save ou Fichier/Enregistrer, et c'est ça que tu sucres à
chaque fois.

De même que tu ne sauves pas le même fichier image selon que tu
choisisses GIF ou JPEG, tu ne sauves pas le même fichier texte selon
que tu choisisses ANSI (ou Windows-1252 ou ISO-8859-1) ou bien UTF-8.
Avatar
Andreas Prilop
On Mon, 15 Dec 2008, Pierre Goiffon wrote:

Je crois me souvenir qu'un certain nombre de navigateurs interprètent
automatiquement en windows-1252 une page déclarée comme ISO Latin-1 ?



Tous les navigateurs.

Peut être qu'il y a des mécanismes similaires pour des pages déclarées
en ISO Latin-15 ?



Non.