To: Jean-Francois.Perrot@lip6.fr
Subject: =?UTF-8?Q?Confirmation_de_votre_d=C3=A9claration?=
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<table style=3D"font-family: Arial,Helvetica,sans-serif; font-size:
12px;" =
border=3D"0" cellpadding=3D"1" cellspacing=3D"1"
width=3D"770"><tr><td>
et rendez vous à la rubrique =AB C=
onsulter mes déclarations =BB.<br>
</td></tr></table>
é
= C3A9
).text/html
" est restitué exactement comme le
serait du "text/plain
", d'abord par décodage du format quoted-printable
pour obtenir une chaîne d'octets, ensuite par interprétation de ces
octets conformément au charset
pour donner un chaîne de caractères. Le texte HTML ainsi obtenu est
enfin affiché par le mailer comme le ferait un navigateur. Obersvons au
passage que toute la syntaxe HTML est exprimée en ASCII...à
et é
) et non
pas via leurs octets en quoted-printable ( qui seraient =C3=A0
et =C3=A9
). AB
et BB
qui ne sont pas des octets ASCII, et qui par conséquent ne sont pas de
l'UTF-8 (puisque en UTF-8 les seuls codes d'un seul octet sont les
codes ASCII) : ce sont eux qui ont été affichés comme les losanges
noirs portant un point d'interrogation. Consulter
...", c'est
seulement un
saut de ligne arbitraire destiné à éviter des lignes trop longues.C2AB
et C2BB
.«
et »
pour les guillemets.Journée
Epopée-2013 Programme
"
écrit en UTF-8, lu avec un logiciel attendant du Latin-1 :C3A9
codant en UTF-8 le "e accent aigu
minuscule" sont en effet lus en Latin-1 comme "A tilde majuscule" et
"copyright".<html lang="fr-FR">
<head>
<meta charset="UTF-8" />
<div class="entry-summary">
<p>Une journée d’étude sur
l’épopée aura lieu le 28 novembre. Vous trouverez le
programme ici : Journée Epopée-2013-Programme</p>
</div><!-- .entry-summary -->
é
"
sont "en dur" dans le texte-source.U+2019
, et
non par le caractère moins lointain U+02BC
, MODIFIER
LETTER APOSTROPHE
. En Windows 1252, ce qui sert d'apostrophe,
(octet 92
) est effectivement le "right single quotation
mark". Mais pourquoi choisir une entité dans un texte en UTF-8 ?Date: Mon, 30 Dec 2013 00:47:07 +0100
From: xx.yy@lip6.fr
To: tout-lip6@lip6.fr
Subject: [Invitation]: Soutenance de =?iso-8859-15?b?dGjoc2U=?= de XXYYY
Content-Type: text/plain;
charset=ISO-8859-15;
format="flowed"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
User-Agent: Internet Messaging Program (IMP) H3 (4.3.11)
Bonjour,
C'est avec grand plaisir que je vous invite ‡ ma soutenance de
thËse
...
Elle aura lieu le mardi DD Janvier AAAA ‡ 14h00, sur le campus de
l'UniversitÈ Pierre et Marie Curie, Tour TT, 1er Ètage, couloir
CC-DD,
salle SSS (Plan d'accËs:
http://www.upmc.fr/fr/vie_des_campus/handicap/plan_d_acces.html).
…videmment, vous Ítes Ègalement invitÈ au pot qui suivra
Cordialement,
=?iso-8859-15?b?dGjoc2U=?=
, dGjoc2U
doit être
l'écriture en Base64 des octets 74 68 E8 73 65
(= thèse
en Latin-9 comme en Latin-1) - on le vérifie facilement.charset=ISO-8859-15;
.
Content-Transfer-Encoding: 8bit
, c'est-à-dire que les octets
sont tous transmis tels quels.Latin-1 |
octet |
MacRoman |
à |
E0 |
‡ |
è |
E8 |
Ë |
é |
E9 |
È |
É |
C9 |
… |
ê |
EA |
Í |
=============
RÈsumÈ
=============
Dans le cas des rÈseaux mobiles, nous sommes intÈressÈs par
comprendre la
relation entre la technologie sans fil et les opportunitÈs de
contact
entre les núuds mobiles.
Le premier objectif de cette thËse est de contrÙler líutilisation des
ressources
du rÈseau domestique afin díoptimiser la performance des
applications concurrentes.
La passerelle domestique est responsable de la connexion du
rÈseau
domestique au reste de líInternet.
ú
pour la première et í
pour les
autres.9C
et 92
,
qui codent bien le "e dans l'o" et l'apostrophe... en Windows 1252 !9C
aurait dû devenir BD
(e dans l'o). L'apostrophe en revanche ne se trouve pas plus en Latin-9
qu'en Latin-1 : il faut donc revenir au "quote" (ASCII 27
).
Voyez les commentaires sur Wikipedia. 61 6c 65 72 74 65 72 20 6c 65 20 6d 6f 64 e9 72 61
74
65 75 72
75 6e 65 20 70 72 6f 74 68 e8 73 65 20 65 6e 20 70
6c
61 74 69 73 71 75 65
27 4e 61 76 41 63 74 75 27 2c 20 27 50 72 e9 63 e9
64
65 6e 74 27 5d 29 3b
alerter le modérateur
une prothèse en platisque
(sic)'NavActu', 'Précédent']);
alerter le mod象teur
une proth粥 en
platisque
'NavActu', 'Pr褩dent']);
e9
(= 'é
') et e8
(='è
').e8
ou e9
est pris pour le début d'un triplet codant un caractère chinois. Chaque
caractère chinois remplace alors les 3 caractères Latin-1 commençant
par 'é
' ou par 'è
', à savoir :éra
-> e9 72 61
-> 象, èse
-> e8 73 65
-> 粥,écé
-> e9 63 e9
-> 褩.72
, 73
, et 63
),
ce qui est contraire au principe
d'UTF-8 :U+8C61
--> E8 B1 A1
U+7CA5
--> E7 B2 A5
U+8929
--> E8 A4 A9
// Interprétation en utf-8 d'une chaîne binaire
function utf8(chb) {
var res = "";
for ( var i=0; i<chb.length; i+=8 ) {
var val = parseInt(chb.substr(i,
8), 2); // 1er octet
if( val < 128 ){ // ASCII
res +=
String.fromCharCode(val);
}else if( val >= 240 ){ // 4
octets
contr1 =
(val-240) * 262144;
i += 8;
// 2ème octet
var val2
= parseInt(chb.substr(i, 8), 2);
contr2 = (val2-128) * 4096;
i += 8; // 3ème octet
var val3 = parseInt(chb.substr(i, 8), 2);
contr3 = (val3-128) * 64;
i += 8; // 4ème octet
var val4 = parseInt(chb.substr(i, 8), 2);
contr4 = val4-128;
res += String.fromCharCode(contr1+contr2+contr3+contr4);
}else if( val >= 224 ){
// 3 octets
contr1 = (val-224) * 4096;
i += 8; // 2ème octet
var val2 = parseInt(chb.substr(i, 8), 2);
contr2 = (val2-128) * 64;
i += 8; // 3ème octet
var val3 = parseInt(chb.substr(i, 8), 2);
contr3 = val3-128;
res += String.fromCharCode(contr1+contr2+contr3);
}else{ // 2 octets
contr1 = (val-192) * 64;
i += 8; // 2ème octet
var val2 = parseInt(chb.substr(i, 8), 2);
contr2 = val2-128;
res += String.fromCharCode(contr1+contr2);
}
}//for
return res;
}// utf8