"MCI (ex do ré Mi chel la si do) [MVP]" <enleverlesO.OmcO@OmclaveauO.com> a
écrit dans le message de news:uwV5hoEaIHA.3652@TK2MSFTNGP02.phx.gbl...
> Bonsoir !
>
> Regardez donc la pièce jointe (ci-dessous).
>
> La frappe "Alt+0156" donne le caractère marqué comme U+0153 (0x9C).
NANNNNNNNNNNNN !
Je ne sais pas ou tu as fait cette capture d'écran, ou si tu l'as bricolée
(;-) ), mais c'est FAUX !
Ce qui suit le "U" est déjà en HEXADÉCIMAL !!!!!
Ce "(0x9C)" est aberrant !
Il eût fallu écrire :
U+0153 (339 décimal)
LA PREUVE : remonte un peu en arrière, et tu verras :
"e dans l'o minuscule" : 0153
"e dans l'o majuscule" : 0152
"o minuscule double accent" : 0151
"o majuscule double accent" : 0150
"o minuscule brève" : 014F <-- le doute n'est plus possible !
"o majuscule brève" : 014E
"o minuscule macron" : 014D
...
Tu as été "enduit plein d'erreur" par la proximité VISUELLE entre
le "0156", qui est la séquence de frappe au pavé numérique,
à savoir les chiffres décimaux 0-1-5-6
et
le RANG UNICODE du caractère exprimé en hexadécimal 0153
!
> Quelqu'un pourrait-il m'éclairer sur la signification de ce truc ?
La frappe d'un caractère via le pavé numérique (avec une séquence ALT 0xxx)
n'est disponible que pour un nombre RESTREINT de caractères, à savoir 255
(en réalité moins, vu que les codes 0 à 31 sont des caractères de contrôle).
P.ex. si on tape ALT+0333, on obtient la lettre "M", ce qui s'explique
facilement : 333 est égal en hexa à 0x14D, et comme un masque ne conserve
que l'octet de poid faible, il est retenu 0x4D, qui est bien le code ANSI
(Latin-1) de la lettre M.
Comme il y a beaucoup plus de caractères UNICODE (en théorie 65535), il NE
PEUT PAS y avoir correspondance biunivoque entre la valeur UNICODE d'un
caractère (plage de 65535 au max) et la valeur que l'on peut taper au pavé
numérique (plage de 255 au max)
NB: en réalité, en raison de l'existence d'autres "plans" UNICODE, on
dépasse actuellement le million de codes différents.
Un grand nombre de caractères UNICODE ne sont pas "tapables" (néologisme !)
au pavé numérique ...
Il n'y a correspondance entre code UNICODE et code ASCII que pour les 127
1ers caractères !
Ainsi, la lettre "A majuscule" a pour code UNICODE U+0041, soit 65 en
décimal, et on peut effectivement la taper au pavé numérique par la séquence
ALT+065.
Cela est un cas évidemment trivial, vu que la touche "A" existe.
Déjà pour les 128 caractères suivants (donc entre UNICODE et ANSI, sur 8
bits) il y a des différences.
Cela est dû, entre autres, au fait que les valeurs UNICODE comprises entre
0x80 et 0x9F ne sont pas utilisées, alors qu'elles le sont en ANSI (8 bits)
!
NB : Je n'ai trouvé nulle part la raison d'être de cette plage non-utilisée
en UNICODE.
P.ex. dans cette plage "non utilisée" en UNICODE, on trouve en ANSI le
fameux "o" (code 0x9C/156), qui se trouve "renvoyé" en UNICODE dans le bloc
"Latin étendu A" (voir plus bas) (code 0x153/339)
Entre 0x9F et 0xFF on retrouve la correspondance
P.ex. le "Ç" (c cédille majuscule), non
prévu sur un clavier AZERTY, est
obtenu par la séquence ALT+0199
Et son code UNICODE U+00C7 vaut bien la même chose en décimal : 199
Enfin, bien évidemment, il ne peut y avoir aucune correspondance possible
pour tous les caractères au delà du 256ème.
On a défini en UNICODE plusieurs "blocs", ainsi dénommés :
0x0000 à 0x007F Latin de base (identique à ASCII, sur 7 bits)
0x0080 à 0x009F Non-utilisé (Utilisé en ANSI, sur 8 bits)
0x00A0 à 0x00FF Supplément Latin-1
0x0100 à 0x017F Latin étendu A
0x0180 à 0x024F Latin étendu B
0x0250 à 0x02AF Alphabet phonétique international
0x02B0 à 0x02FF Lettres modificatives avec chasse
0x0300 à 0x036F Diacritiques
....
PS : j'ai beaucoup simplifié, et certains puristes risquent de hurler.
Mais je n'avais pas l'intention (ni le temps) ici de détailler ni la norme
ASCII ISO/CEI 646, ni la norme UNCODE ISO/CEI 10646, ni les différences
entre UTF8, UTF16, ...
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] -
http://www.bellamyjc.org