Sujet : Re: Une famille décimée par la Covid-19 À?elles-sous-Châtenois : "Ici, c’est la sidération"
De : om+news (at) *nospam* miakinen.net (Olivier Miakinen)
Groupes : fr.comp.usenet.lecteurs-de-newsDate : 24. Nov 2021, 22:19:40
Autres entêtes
Organisation : There's no cabale
Message-ID : <snma9c$2d65$1@cabale.usenet-fr.net>
References : 1 2 3 4 5 6 7 8 9 10 11 12
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4
Le 24/11/2021 15:01, M.V. a écrit :
Ici, on voit que le caractère à (c3 a0) est coupé en deux : le c3 dans la
première ligne, le a0 dans la deuxième.
Toi, tu le vois directement avec le résultat donné par
https://base64.guru/converter/decode/hex ou c'est parce que le
décodeur + interpréteur UTF-8 précédent
https://www.utilities-online.info/base64 avait donné un résultat
incohérent et te mettait, du coup, sur la piste de l'anomalie ?
D'une part quand il y a une anomalie on voit bien à partir de quel
caractère ça déconne. Par exemple ici c'est l'endroit où le texte
« à Courcelles » a fini par devenir « À?elles ».
Mais sinon, lorsque l'encodage est UTF-8 il est très facile de
connaître les débuts de caractères quand on regarde la chaîne hexa.
En effet, il y a deux cas :
- soit un caractère ASCII encodé sur un seul octet, dont le premier
bit est un 0 ;
- soit un caractère codé sur plusieurs octets dont le premier bit
est un 1, et :
- les deux premiers bits sont 11 pour le premier octet ;
- les deux premiers bits sont 10 pour chaque octet suivant ;
Du coup, en hexa, le premier chiffre est entre 0 et 7 pour un caractère
ASCII, et dans tous les autres cas :
- le premier chiffre du 1er octet est c, d, e ou f ;
- le premier chiffre du ou des octets de suite est 8, 9, a ou b.
Donc le simple fait que le deuxième encoded-word, une fois décodé,
commence par un a prouve que le découpage est foireux.
Ou bien doit-on avoir une longueur de l'encoded-word [une fois converti
en Hex] multiple de 4 ???
Non. C'est lorsque le texte est encodé en Base64 qu'il a une longueur
multiple de 4, et ça, si ce n'était pas respecté par MesNews, tout le
monde l'aurait vu tout de suite.
Dans le texte décodé, ce sont généralement des blocs de 3 octets qui
correspondent aux blocs de 4 octets après codage. Mais justement c'est
parce que MesNews découpe strictement en multiples de 3 octets qu'il
y a un problème. Dans le cas qui nous occupe, MesNews aurait dû ne
prendre que 2 octets pour la fin de son premier encoded-word, ce qui
résulte simplement en un codage Base64 qui se termine par un « = ».
-- Olivier Miakinen