Corrigé
Lien vers l'énoncé en HTML
Cette page contient des caractères chinois et
des lettres accentuées,
c'est donc très probablement de l'UTF-8.
En effet, les systèmes de codage autres qu'Unicode qui accommodent les
caractères chinois ne connaissent en général que l'ASCII 7 bits en
dehors desdits caractères. C'est en particulier vrai pour Shift-JIS. Et
comme il s'agit d'une page Web, la
réalisation d'Unicode est UTF-8 et non UTF-16 (encore moins UTF-32 !).
Un virus n'est jamais exclu ! Mais en
l'occurrence il s'agit
vraisemblablement d'une page qui ne mentionne pas le codage qu'elle
utilise, ledit codage n'étant pas celui que le navigateur emploie par
défaut. Cete situation a été abondamment illustrée dans le cours et
dans
les examens de années précédentes...
Le remède et d'essayer un autre codage dans le menu ad hoc du
navigateur, comme illustré ici.
En pratique, un ou deux essais suffisent.
Mais on peut essayer de prédire le résultat...
01 03 05 07 09
11 13 15 17 19 21
23
U+050E
, CYRILLIC CAPITAL LETTER KOMI
TJE
).U+030F COMBINING DOUBLE GRAVE ACCENT
)
:1 3 5 7 9
http://www.j-texts.com/sheet/h7bu.html
)俳 | 諧 | 七 | 部 | 集 | ( | 芭 | 蕉 | 七 | 部 | 集 | ) |
946F |
E67E |
8EB5 |
9594 |
8F57 |
8169 |
946D |
8FD4 |
8EB5 |
9594 |
8F57 |
816A |
? o |
? ~ |
? ? |
? ? |
? W |
? i |
? m |
? Ԏ ? |
? ? |
? ? |
? j |
D48E
, qui se trouve
être le code UTF-8 deU+050E
, CYRILLIC CAPITAL LETTER KOMI
TJE
. B
' qui est
nécessairement de rang pair. Par conséquent, la séquence
d'octets correspondant au carré blanc doit être de longueur paire, à
savoir 2 ou 4. Impossible d'en dire plus à ce stade.( | 自 | 己 | 解 | 凍 | 式 | 。 |
8169 |
8EA9 |
8CC8 |
89F0 |
9380 |
8EAE |
8142 |
? i |
? ? |
? ȉ
𓀎 ? |
? B |
C889
,
qui est le code UTF-8 de U+0209 LATIN SMALL LETTER I
WITH DOUBLE GRAVE
(que j'ai grossi pour qu'on le reconnaisse), F093808E
, code UTF-8 du
caractère U+1300E
. Une étudiante de M2 m'a apporté un jour le billet ci-contre, en me disant "c'est curieux". En effet ! Je le soumets à votre sagacité. Qu'en pensez-vous ? Pour vous mettre sur la voie... notez que le caractère pointé par la flèche est un caractère graphique, aujourd'hui sorti de l'usage.
U+222B .) |
Ç
' majuscule là où on attendrait le signe '€
'.E9
, il apparaît à la
place de e accent aigu ;EA
, il apparaît à la
place de e accent circonflexe ;Ç
correspond à l'octet 80
, il
apparaît à la
place de €
;F4
,
il apparaît à la place de o accent circonflexe.E9
;EA
;€
= 80
;
F4
.Oui, bien sûr !
Décrivons d'abord ce qui demande explication dans cet affichage.
Comme on sait, il ya deux parties dans un message transmis par SMTP,
qui ne suivent pas les mêmes lois : les en-têtes et le corps du
message. Dans la visualisation que donne le logiciel de courrier (ce
n'est pas un navigateur !) ces deux parties sont séparées par une ligne
horizontale. Dans ces deux parties on voit de très vilains losanges
noirs portant des points d'interrogation blancs, à la place de
caractères non-décodés. C'est la présence de ces losanges noirs dont il
faut rendre compte.
Pour les en-têtes, l'origine des losanges noirs se trouve
au début de l'extrait du code-source, dans les champs From
et Subject
:
on y voit les mêmes losanges noirs, qui dénotent des caractères
non-ASCII alors que (quitte à être explicitement codés comme décrit au cours n°3) les contenus de ces champs doivent
être en ASCII 7 bits.
Pour le corps du message c'est tout différent. Aucun losange noir dans
le code-source !
Notons d'abord que seule nous intéresse la partie contenue entre les
deux lignes séparatrices
------=_NextPart_000_0012_822C9ABA.CB682AD8
car ce qui suit représente le fichier attaché "suspension.html
"
qui ne nous pose aucun problème de visualisation.
Cette partie est responsable du texte affiché dans la fenêtre
principale. Elle spécifie le
mode de transmission (Transfer-Encoding),
en l'occurrence le mode quoted-printable, mais pas le codage
des
caractères du fichier (charset) !
Du coup le corps du message est dûment codé en ASCII, mais le logiciel
ne sait pas comment interpréter le quoted-printable,
il utilise donc son codage par défaut, qui n'est pas celui du message,
d'où les losanges noirs.
Comme d'usage, les caractères ASCII sont décodés correctement, tous les
autres sont caviardés.
On peut aller plus loin, et juger que ce codage par défaut est
probablement UTF-8, en tout cas pas un codage à 8 bits comme MacRoman :
dans ce dernier cas, il aurait interprété à sa manière le quoted-printable,
par exemple 'È
' pour l'octet E9
.
Quant au codage d'origine, il est facile à déceler au vu de la
traduction en quoted-printable : c'est Latin-1 ou
Windows-1252.
EN-TÊTE INCORRECT, contenant des données en 8 bits non
codées (caractère E9 en hexadécimal)
From
,
qui en bonne règle devrait être entièrement en ASCII, E9
: cela est même dit deux fois, char E9 hex
Cr\351dit
, où le e accent aigu
est donné en octal : 0351
= 233
= 0xE9
.Subject
également violait la règle.ExMail.txt
,
et lorsque je veux ouvrir ce fichier avec mon éditeur favori, ce
dernier proteste :Avant de résoudre le problème, prenons-en
l'exacte
mesure : ce qui embarrasse TextWrangler ici, ce n'est pas les lettres
accentuées du corps du message, puisqu'elles sont codées en ASCII
quoted-printable, mais les 3 e accent aigu des
en-têtes From
et Subject
, qui eux se
manifestent par 3 octets E9
. Tout les reste du fichier
est en ASCII (y compris l'attachement donné en base64).
Le choix est donc entre Latin-1 et Windows-1252, il est sans conséquence...