diff --git a/doc/encodages.md b/doc/encodages.md index bbb1e98a52b24c58c5e747397337b577b1cd9940..d25510feb1390062461bf17ec085ee3f595a9eb7 100644 --- a/doc/encodages.md +++ b/doc/encodages.md @@ -46,8 +46,8 @@ En latin1, les caractères sont codés sur un octet et on verra bien `0xe8` pour le caractère "è". ```python ->>> "3ème".encode("latin1") -b'3\xe8me' +>>> "è".encode("latin1" +b'\xe8' ``` En utf-8, les caractères dont la valeur est supérieure ou égale à `0x80` sont @@ -55,14 +55,29 @@ codés sur 2 octets. Une partie des octets sert à indiquer quelle catégorie de caractère est encodé. ```python ->>> "3ème".encode("utf-8") -b'3\xc3\xa8me' +>>> "è".encode("utf-8") +b'\xc3\xa8' ``` C'est pourquoi quand on essaie de lire un fichier encodé en utf-8 en le décodant comme du latin1, on obtient des caractères erronés : ouvrir `basic_mauvais_latin1.html`. +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 code le nombre associé au caractère "è", +`00011101000` on retrouve bien l'entier 232 (0xe8 en hexadécimal). + +```python +>>> bin(0xc3a8) +'0b1100001110101000' + --- -- + +>>> hex(0b00011101000) +'0xe8' +``` + ## Convertir un fichier utf-8 en latin1 J'utilise [iconv](https://doc.ubuntu-fr.org/iconv) pour convertir notre fichier