formations/python-avancé/4-encodage.md

58 lines
1.0 KiB
Markdown
Raw Normal View History

2020-02-26 23:00:43 +00:00
# L'encodage
## Les octets d'abord
```python
2020-03-03 23:24:51 +00:00
>>> bytes([0x01, 0x02]) == b"\x01\x02"
2020-03-01 23:39:47 +00:00
True
2020-02-26 23:00:43 +00:00
```
Notes:
Notez qu'en hexadecimal, deux symboles permet de représenter
2020-03-01 23:57:54 +00:00
exactement 8 bits, donc exactement un octet.
2020-02-26 23:00:43 +00:00
## ASCII
Notes:
1960, 7 bits ("a word", qu'on a traduit "un octet"), [0; 127]
Seul la moitié des octets sont donc de l'ASCII valide.
Exercice: Utiliser `range()` et `bytes([i])` pour afficher la table ascii.
## Latin-1
Notes:
1985, 8 bits, [0; 255]
Couvre environ 32 langues.
Quasi complet pour le francais, il manque juste le Œ, le œ (le
francais qui s'en est occupé n'était pas linguiste.)
Exercice: Utiliser `range()` et `bytes([i])` pour afficher la table latin-1.
## Unicode
Notes:
~1990, d'abord sur 16 bits, aujourd'hui c'est juste une base de donnée.
Couvre environ 150 langues (environ toutes).
Calque latin1 de 0 à 255, même C0 (controles bien définis) et C1 (controles
ignorés, de 0x80 à 0x9F).
2020-03-03 23:24:51 +00:00
## encoder, décoder
- `str.encode``bytes`
- `bytes.decode``str`