Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
900-codage:020_code_ascii [le 13/02/2025 à 14:40] – supprimée - modification externe (Date inconnue) 127.0.0.1 | 900-codage:020_code_ascii [le 04/10/2025 à 17:20] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. 66.249.69.2 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Le code ASCII ====== | ||
+ | |||
+ | ===== Au début était le texte ===== | ||
+ | |||
+ | Nous n' | ||
+ | |||
+ | {{900-codage: | ||
+ | Figurez-vous que l' | ||
+ | |||
+ | La liaison RS232 prévoit de transmettre en série (bit par bit) un mot de 8 bits en utilisant le bit de poids le plus fort (bit 7) comme bit de parité, pour effectuer un contrôle de validité de la donnée. Le principe est simple : dans un octet, le bit de parité est ajusté de manière à ce que le nombre de 1 soit toujours pair (ou impair, ça dépend de la convention adoptée). | ||
+ | |||
+ | Dans ce cas de figure, il n'y a que 7 bits (b0 à b6) qui sont significatifs d'une donnée, le dernier bit servant juste à ajuster la parité. | ||
+ | |||
+ | ==== 7 bits pour un caractère ==== | ||
+ | |||
+ | | ||
+ | |||
+ | Comme la base binaire (0 ou 1), si elle est très commode pour un calculateur électronique, | ||
+ | |||
+ | | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | | ||
+ | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | | ||
+ | |||
+ | Mais il est aussi possible d' | ||
+ | |||
+ | Pourquoi pas la base 10 à laquelle nous sommes habitués depuis notre plus tendre enfance ? Parce que, malheureusement, | ||
+ | |||
+ | Certains ont mis en œuvre un codage appelé BCD (Binary Coded Decimal). Le principe est simple : chaque « digit » décimal (de 0 à 9) est codé sur un quartet. Certaines combinaisons de bits sont donc impossibles. | ||
+ | |||
+ | * 9 va donner 1001 | ||
+ | * 10 donnera 0001 0000 et non pas 1010 | ||
+ | |||
+ | Mais revenons à notre code ASCII ; 7 bits sont-ils suffisants ? Oui et non... | ||
+ | |||
+ | D' | ||
+ | |||
+ | De plus, pour transmettre convenablement un texte, il faudra quelques sémaphores pour indiquer par exemple quand commence le texte, quand il finit... | ||
+ | |||
+ | Enfin, suivant les langues, même lorsqu' | ||
+ | |||
+ | Au final, si 7 bits suffisent généralement pour une langue donnée, éventuellement en faisant l' | ||
+ | |||
+ | La norme iso-646 définit un code ASCII sur 7 bits. Ce code, parfaitement adapté à l' | ||
+ | |||
+ | {{ 900-codage: | ||
+ | Les « caractères » sur fond bleu sont les caractères non imprimables. Pour bien lire le tableau, il faut construire le code hexadécimal en prenant d' | ||
+ | |||
+ | Comme vous le constatez, il n'y a aucune lettre accentuée dans ce codage. Ce dernier a donc été joyeusement « localisé » pour satisfaire aux exigences des divers pays utilisant l' | ||
+ | |||
+ | ==== Pour un bit de plus ==== | ||
+ | |||
+ | Avec les avancées de la technique, le huitième bit qui servait pour le contrôle de parité, contrôle rendu de plus en plus inutile, va être utilisé pour coder plus de caractères. Deux fois plus, finalement. | ||
+ | |||
+ | Ainsi, le codage « iso-latin-1 », également connu sous le nom de « iso-8859-1 » propose __ à peu près__ le codage suivant | ||
+ | |||
+ | {{ 900-codage: | ||
+ | |||
+ | Comme vous pouvez le constater ici : | ||
+ | * les codes ASCII de 0 à 7F (127 en décimal) demeurent inchangés ; | ||
+ | * les codes supérieurs (ceux qui ont le bit 7 à 1) représentent quelques symboles supplémentaires, | ||
+ | |||
+ | Pourquoi « à peu près » ? Le codage ci dessus est une interprétation de la norme iso-8859-1 par notre ami Microsoft qui a un peu bricolé pour ajouter quelques symboles de plus, dont celui de l' | ||
+ | |||
+ | Pour ajouter à la complexité, | ||
+ | |||
+ | Finalement, ce bit de plus ne fait que déplacer le problème sans toutefois l' | ||
+ | |||
+ | ===== Les as de la confusion ===== | ||
+ | |||
+ | Croyez-vous que la situation est suffisamment confuse comme ça ? Vous vous trompez ! D' | ||
+ | |||
+ | ==== EBCDIC ==== | ||
+ | |||
+ | Je me contenterai de vous citer la définition issue du « jargon français »: | ||
+ | |||
+ | // | ||
+ | |||
+ | Plus factuel et plus détaillé sur « [[https:// | ||
+ | |||
+ | Il existe quelques « moulinettes » capables de convertir tant bien que mal des fichiers codés sous cette forme en fichiers ASCII. | ||
+ | |||
+ | Bien que l' | ||
+ | |||
+ | ==== Pages de codes 437 et 850 ==== | ||
+ | |||
+ | Lorsque IBM a créé le PC (Personal Computer, faut-il le rappeler ?), des jeux de caractères ont été créés sur 8 bits, spécifiquement pour ces machines. Ci-dessous la page de code 437 (CP437). Attention, ce tableau se lit dans l' | ||
+ | |||
+ | {{ 900-codage: | ||
+ | |||
+ | Tous les petits « grigris » à partir du code B0 étaient destinés à faire de l'art ASCII étendu. De jolies interfaces pseudo graphiques sur des terminaux en mode texte. | ||
+ | |||
+ | Si cette page de code est compatible avec l' | ||
+ | |||
+ | ===== Reconstruire la tour de Babel ===== | ||
+ | |||
+ | Et si l'on construisait une table de codage sur 16 bits et pourquoi pas même 32 bits ? Là, on aurait de la place pour entrer dans une seule et unique table tous les symboles que l' | ||
+ | |||
+ | Rassurez-vous, | ||
+ | |||
+ | Pourquoi faire, me direz-vous ? Avons-nous besoin de manipuler dans un même document tous les symboles d' | ||
+ | |||
+ | Il y a au moins deux bonnes raisons qui militent en faveur d' | ||
+ | |||
+ | * si tout le monde utilise UNICODE, il n'y a plus de problèmes, tout le monde peut écrire dans sa langue maternelle en utilisant la même convention ; | ||
+ | * les pauvres gens qui font de la traduction de documents d'une langue dans une autre n' | ||
+ | |||
+ | Cependant UNICODE utilisé brutalement aboutirait à un quadruplement du volume pour un document donné, chaque caractère étant désormais encodé sur 32 bits et non plus 8, le tout avec probablement plein de zéros et quelques octets constants dans chaque document. Une solution à ce petit problème s' | ||
+ | |||
+ | Cette normalisation, | ||
+ | |||
+ | La raison ? Le texte a été encodé en UTF-8 et, pour une raison quelconque, a été interprété par le client comme de l' | ||
+ | |||
+ | |||
+ | |||
+ | === Note : === | ||
+ | |||
+ | Les passionnés de la chose [[http:// | ||
Le code ASCII: Dernière modification le: 01/01/1970 à 00:00 par