====== 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 ===== **A**merican **S**tandard **C**ode for **I**nformation **I**nterchange 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. [[nsi:premiere:fichier_texte|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) 'и'