Table des matières
Encodages : ASCII et Unicode
Les transistors, les circuits mémoires… stockent des entités binaires, des 0 et des 1. On a vu que l'on pouvait regrouper ses bits pour former des mots – 1 octet est un mot de 8 bits.
Comment va-t-on stocker des caractères ?
Table ASCII
American Standard Code for Information Interchange
128 caractères, pas de caractères accentués, beaucoup de caractères de contrôle liés à la technologie de l'époque – années 60.
Certains sont spécialement important néanmoins :
- HT pour Horizontal Tab, c'est à dire une tabulation que l'on note généralement
'\t'. - LF pour Line Feed, c'est à dire une fin de ligne que l'on note généralement
'\n'. - CR pour Carriage Return, c'est à dire le retour charriot ce qui correspond à un retour à la ligne que l'on note généralement
'\r'. - SP pour SPace, c'est à dire l'espace
' '.
Il peut y avoir, selon le système et le langage, des variations pour indiquer un retour à la ligne. Autrefois, c'était '\r\n' ce que l'on retrouve dans certains échanges internet. Parfois, '\n' suffit, comme en Python.
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | LF | VT | FF | CR | SO | SI |
| 1x | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US |
| 2x | SP | ! | “ | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
| 3x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
| 4x | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| 5x | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
| 6x | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
| 7x | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | DEL |
Unicode
Codage international contenant environ 140 000 caractères pour tous les alphabets.
- Les 128 premiers correspondent à ASCII
- Les 256 premiers correspondent à ISO 8859-1 = Latin-1 – lui-même compatible avec ASCII
Un caractère est Unicode codé sur 4 octets.
Le plus souvent, pour améliorer les performances, Unicode n'est pas utilisé directement. Pour les textes on utilise des adaptation, notamment UTF-8, permettant d'occuper moins de 4 octets par caractère. On verra plus tard.
Unicode et Python
En Python, on utilise directement Unicode ce qui permet d'écrire à peu près n'importe quel caractère.
>>> ord('c') # renvoie le code Unicode du caractère
99
>>> ord('и')
1080
>>> chr(99) # opération inverse : code -> caractère
'c'
>>> chr(1080)
'и'
