Question 1 :
- Coder en UTF8 (binaire) le
é
codé233
.233
donne11101001
- Notes :
- On peut l’obtenir avec
,
- ou par divisions successives par 2 :
- On a zéro au quotient on s’arrête et on prend les restes successifs 1, 0, 0, 1, 0, 1, 1, 1 dans l’ordre inverse 😉
- ou en
python
:>>> ord('é') 233 >>> bin(ord('é')) '0b11101001' >>> bin(233) '0b11101001' >>> hex(233) # au passage '0xe9' >>> bin(233) # reour au sujet '0b11101001' >>> bin(ord('é')) '0b11101001' >>> bin(ord('é'))[2:] # avec ça on a toujours le code '11101001'
- On peut l’obtenir avec
- Notes :
- Il faut les caser dans ces 2 octets
110xxxxx 10xxxxxx
, - donc
11000011 10101001
.
Question 2 :
- Combien de caractères différents peut on coder en UTF-8 ?
Alors là, j’ai souvent dit des âneries…
La bonne réponse est toute bête :
- 1 octet
0xxxxxxx
, de l’ASCII, 7 bits avec deux possibilités, zéro ou un …
possibilités
- 2 octets
110xxxxx 10xxxxxx
, mais seulementbits disponibles …
possibilités ?
Non, car on ne mettra pas de code en dessous de huit bits !
possibilités !
- 3 octets
1110xxxx 10xxxxxx 10xxxxxx
, mais seulementbits disponibles …
possibilités ?
Non plus, car on ne mettra pas de code en dessous de huit bits !
possibilités !
- 4 octets
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
, mais seulementbits disponibles …
possibilités ?
Vous avez compris…
possibilités !
Au final, un total de .
Bref, c’est tout bête, 21 bits au max en UTF-8 et possibilités !
En vrai… « Le standard Unicode décrit comment les caractères sont représentés par les points de code. Une valeur de point de code est un nombre entier compris entre 0
et 0x10FFFF
(environ 1,1 million de valeurs, avec environ 110 000 valeurs attribuées à ce jour). » comme le dit la doc de python…
Question 3 :
On a la séquence de huit octets suivante :
C3 A9 6C C3 A8 76 65 73
où chaque octet est représenté par deux chiffres hexadécimaux.
- C’est en UTF-8, décoder la séquence.
- En binaire,
- le
C
donne12
donc1100
, - le
3
donne…3
donc0011
, - le
A
donne10
donc1010
, - le
9
donne …9
donc1001
, - etc
- le
- Donc les octets donnent :
C3 A9
donne11000011 10101001
soit un code de11101001
donc233
doncé
,6C
donne01101100
soit108
doncl
,C3 A8
donne11000011 10101000
soit un code de11101000
donc232
doncè
,76
donne01110110
soit118
doncv
,65
donne01100101
soit101
donce
,73
donne01110011
soit115
doncs
.
- La séquence donne la chaîne «
élèves
» !
- En binaire,
- N.B. : si c’était pas en UTF8 mais en latin-1, une norme en voie de disparition, ça afficherait … «
élèves
» ! On comprend mieux certains bugs d’affichage.