From 8a743a51968375bc57eeb3c0cdbd4d8a64c99217 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7oise=20Conil?= <francoise.conil@insa-lyon.fr> Date: Wed, 4 Jan 2023 16:52:09 +0100 Subject: [PATCH] Quelques corrections aux informations sur les encodages (typos et formulations) --- doc/encodages.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/doc/encodages.md b/doc/encodages.md index bd7a224..f5fd884 100644 --- a/doc/encodages.md +++ b/doc/encodages.md @@ -1,6 +1,6 @@ # Encodages -L'[encodage de caractères](https://en.wikipedia.org/wiki/Character_encoding) +L'[encodage de caractères](https://en.wikipedia.org/wiki/Character_encoding), c'est associer des nombres à des caractères graphiques dont les lettres utilisées dans les différentes écritures. @@ -11,11 +11,11 @@ Aujourd'hui, l'encodage [utf-8](https://en.wikipedia.org/wiki/UTF-8) est largement utilisé. Auparavant, l'encodage [latin1](https://en.wikipedia.org/wiki/ISO/IEC_8859-1) -était très utilisé. Il permettait d'avoir les caractères de base et une bonne -partie des caractères accentués européens. +était très utilisé. Il permettait d'avoir les caractères de base et plusieurs +caractères accentués européens. Windows utilise historiquement un encodage similaire au latin1 mais différent -[Windows-1252](https://en.wikipedia.org/wiki/Windows-1252). +: [Windows-1252](https://en.wikipedia.org/wiki/Windows-1252). Les pages web que l'on a vues sont encodées en **utf-8**. @@ -28,12 +28,12 @@ L'article [How does UTF-8 turn “😂†into “F09F9882�](https://sethmlar explique le fonctionnement de cet encodage qui utilise un nombre variable d'octets pour représenter les caractères. -Grâce à Unicode et utf-8, on peut utiliser tous les caaractères que l'on +Grâce à Unicode et utf-8, on peut utiliser tous les caractères que l'on souhaite dans une page, ce qui n'était pas possible avec les anciens encodages -comme latin1 et autres anciens encodages. +comme latin1. -Le caractère "è" est par exemple associé à l'entier `232`, soit `0xe8` en -[hexadécimal](https://fr.wikipedia.org/wiki/Syst%C3%A8me_hexad%C3%A9cimal) +Prenons comme exemple, le caractère "è" associé à l'entier `232`, soit `0xe8` +en [hexadécimal](https://fr.wikipedia.org/wiki/Syst%C3%A8me_hexad%C3%A9cimal) ```python >>> ord("è") @@ -46,13 +46,13 @@ En latin1, les caractères sont codés sur un octet et on verra bien `0xe8` pour le caractère "è". ```python ->>> "è".encode("latin1" +>>> "è".encode("latin1") b'\xe8' ``` En utf-8, les caractères dont la valeur est supérieure ou égale à `0x80` sont -codés sur 2 octets. Une partie des octets sert à indiquer quelle catégorie de -caractère est encodé. +codés sur 2 octets. Une partie des octets sert à indiquer sur combien d'octets +un caractère est encodé. ```python >>> "è".encode("utf-8") @@ -66,8 +66,9 @@ décodant comme du latin1, on obtient des caractères erronés : ouvrir Dans l'encodage du caractère "è" sur 2 octets, les 3 premiers bits du premier octet sont `110`, les 2 premiers bits du 2ème octet sont `10`. -Lorsque l'on récupère les 11 bits qui codent le nombre associé au caractère -"è", `00011101000` on retrouve bien l'entier 232 (0xe8 en hexadécimal). +Lorsque l'on récupère les 11 autres bits qui codent le nombre associé au +caractère "è" : `00011` + `101000` => `00011101000`, on retrouve bien l'entier +232 (0xe8 en hexadécimal). ```python >>> bin(0xc3a8) @@ -87,7 +88,7 @@ utf-8 en latin1. $ iconv -f utf-8 -t latin1 basic_utf8.html -o basic_latin1.html ``` -## Visualiser l'encodage utilisé +## Visualiser l'encodage utilisé Pourquoi le codage est-il différent en latin1 et en utf-8 ? À cause de la longueur variable des caractères. -- GitLab