Mini-cours de HTML

Codage des caractères

Les 84 caractères de l'alphabet français

À chaque nombre, son caractère

Il important de garder à l'esprit qu'un texte enregistré est ... codé !
En effet, un ordinateur est incapable d'enregistrer des lettres et même des chiffres ! ...

Tout fichier - texte, image, musique, vidéo, programme, ... - n'est qu'un ensemble d'octets. Et, un octet est une série de 8 bits. Un bit étant une information binaire de type oui-non, haut-bas, vrai-faux. On représente cette information sous la forme de 0 (zéro) ou 1 (un).

NB : L'ordinateur est la plus bête machine qui soit. Il n'enregistre que deux types d'information. Mais sa force est qu'il est capable de lire plusieurs millions de bits par seconde.

Une série de 8 bits permet identifier 256 nombres (allant de 0 à 255).

0000 0000 = 0
0000 0001 = 1
0000 0010 = 2
0000 0011 = 3
0000 0100 = 4
0000 0101 = 5
0000 0110 = 6
0000 0111 = 7
...
0111 1111 = 127
1000 0000 = 128
1000 0001 = 129
...
1111 1110 = 254
1111 1111 = 255

On sait qu'il n'existe que 26 lettres minuscules, 26 lettres majuscules, 10 chiffres, quelques signes de ponctuations, ... Bref, on constate qu'on utilise, au total, moins de 95 caractères (non accentués) pour écrire.

Or, une série de 8 bits permet d'identifier 256 nombres (et donc 256 caractères, si on attribue à chaque nombre un caractère). C'est donc amplement suffisant pour tout anglophone.

Les américains et les anglais n'utilisent pas de caractères accentués.
Et, l'informatique, au début, a été inventé par des américains ...

Il suffit alors de définir une table de conversion, d'attribuer à chaque nombre un caractère. La plus connue est la table ASCII ( où seuls les 128 premiers nombres correspondent à un "code", les 128 autres nombres (tous les octets dont le bit de gauche est 1) n'ont pas reçu de signification.)

Les nombres entre 0 et 31 correspondent à des caractères de contrôle tel que le retour à la ligne.

Les 95 nombres entre 32 et 126 (compris) sont des caractères imprimables et attribués aux chiffres, aux lettres minuscules et majuscules (non accentuées) et caractères spéciaux, tel que les caractères de ponctuation, d'arithémtique (+ * - / % =), ...

Le nombre 127 correspond à un code (DEL)

Extrait de la table ASCII

0000 0000 = 0 représente NULL
...
0011 0000 = 48 représente 0
0011 0001 = 49 représente 1
...
0100 0001 = 65 -> A
0100 0010 = 66 -> B
...
0110 0001 = 97 -> a
0110 0010 = 98 -> b
...
0111 1111 = 127 -> DEL

NB : L'espace entre les séries de 4 bits n'est là que pour rendre l'octet plus lisible.

Une table complète (où les nombres entre 128 et 255 sont attribués aux caractères accentués et très spéciaux) s'appelle table ASCII-étendu. Or, une table ASCII-étendu ne suffit pas pour tous les caractères de toutes les langues du monde. Pour chaque version, on a donné un nom différent. En Europe : Latin-1, Latin-2, ...

Si vous parliez "ordinateur", vous diriez :

0011000100101011001100010011110100110010
pour dire : 1+1=2

NB : Ce qui est enregistré est toujours un nombre de bits divisible par 8.

01000010010011110100111001001010010011110101010101010010
pour dire : BONJOUR

Ce qui est enregistré sur le disque dur sont les suites de 0 et 1.
Ce que vous voyez à l'écran n'est que la traduction de ces suites de 0 et 1, selon une table de conversion.

Heureusement, l'ordinateur est capable de décoder des millions d'octets par seconde.

NB : Coder signifie stocker sous un format, ici, binaire.
Décoder = transformer le format binaire en données exploitables (lisibles, audibles, exécutables, ...)

Les caractères bizarres

Tout ceci pour vous expliquer pourquoi parfois est affiché à l'écran des caractères bizarres à la place des caractères accentués. C'est dû à un mauvais choix de la table de conversion.

Toutes les tables (ASCII, UTF-8, Latin-1, Latin-9, ...) sont identiques pour les 128 premières définitions. Ouf ! C'est après que cela se complique ...

NB : Les anglophones n'utilisent pas de caractères accentués.
Conséquence : ils ne voient jamais de caractères bizarres sur leur écran.

Mais, tout le monde ne parle pas anglais ! ...

Une table de conversion encore souvent utilisée en Europe occidentale ( Belgique, France, ...) se nomme officiellement ISO 8859-1, souvent appelée Latin-1. Depuis le passage à l'euro, la table de conversion par défaut des navigateurs web est Latin-9, officiellement ISO 8859-15.

Comment sont codés les caractères accentués ?
Tout dépend de la table choisie ...

En Latin-1 (et en Latin-9): é -> 11101001
En UTF-8, : é -> 11000011 10101001

L'espace entre les deux octets n'est là que pour la lisibilité.
En réalité, il n'existe aucun espace entre les 0 et 1.

En UTF-8, le é est codé sur 2 octets !

Que se passe-t-il si ce caractère (é) est enregistré (codé) en UTF-8 (par exemple, via le Bloc-notes) mais lu (décodé via un navigateur-web) en utilisant la table Latin-1 ou Latin-9 ?

En latin-1 ou Latin-9, chaque octet correspond à un caractère.
Le navigateur web affichera donc 2 caractères !

Lesquels ?

En Latin-1 (ou Latin-9) : 11000011 -> Ã
En Latin-1 (ou Latin-9) : 10101001 -> ©

Tous les é seront affichés é !

Or, dans la langue française, il existe 16 caractères accentués ... (et deux ligatures)

Choix de la table

Pourquoi le programme qui lit le fichier peut-il se tromper dans le choix de la table de conversion ?

Parce qu'un fichier texte TXT est un "bête" fichier ! Son contenu ne contient que le texte ... et donc pas le nom de la table de conversion utilisée lors de son enregistrement. Or, le programme qui lira le fichier ne sera pas nécessairement le même que celui qui l'a créé ...

Puisque vous êtes en Europe occidentale (Belgique, France, ...), les navigateurs web considèrent que la table à utiliser, en absence d'instruction précise, est Latin-9 ...

Affichage d'un fichier TXT dans un navigateur :

Fichier intelligent

Un fichier intelligent ne contient pas que le texte ...
Un fichier intelligent contient d'autres informations au début du fichier, appelées méta-données.
En HTML, elles sont placées dans le head.

Le fichier HTML est "intelligent", mais VOUS pouvez faire une bêtise ...

Exemple. Si vous enregistrez le fichier HTML en se basant sur UTF-8, mais que vous indiquez dans le head <meta charset="ISO 8859-1" /> (ou que vous omettiez cette balise), des caractères bizarres remplaceront les caractères accentués.

Fichier "bête"

Les fichiers pouvant être lus dans un éditeur de texte et n'indiquant pas l'encodage qui a été utilisé peuvent être mal décodés par le navigateur. Tels que les fichiers au format : texte (*.txt), javascript (*.js), python (*.py), ...

Encodage du code

Si vous publiez des fichiers encodés en utf-8, tel que du code source, (*.js, *.py, ...), du texte (*.txt), des données (*.csv), ...

  1. Créer ou modifier le fichier .htaccess (par exemple, celui à la racine du site), afin d'y ajouter les directives suivantes :

    AddCharset UTF-8 .py
    AddCharset UTF-8 .js

    Pour que tous les fichiers .py et .js soient envoyés au client avec le jeu de caractères UTF-8.

  2. Et/ou ... dans le fichier publié, prévenir vos visiteurs que les caractères accentués et spéciaux peuvent être mal affichés dans un navigateur web. Sans cet avertissement, ils peuvent avoir des doutes sur la qualité de votre publication. Après cet avertissement, invitez-les à télécharger au lieu de le lire.

Conclusion

Si on voit des caractères bizarres sur une page web, la raison est qu'il a été codé sur base d'une table de conversion différente de celle utilisée pour le lire.

Il faut enregistrer un fichier HTML en utilisant la même table de conversion que celle déclarée dans le head. La bonne solution, en HTML, toujours choisir UTF-8.

Encoder les autres fichiers texte (*.txt, *.js, *.py, *.csv ...) en ANSI, Latin-1, Latin-9, ... pour éviter des problèmes d'affichage serait une erreur, car l'UTF-8 présente trop d'avantages.

Le premier avantage de l'UTF-8 est qu'il n'est plus nécessaire de choisir la table de conversion.

Lire aussi : Comprendre les encodages

Les 84 caractères de l'alphabet français

Outre les 26 lettres de l'alphabet, l'écriture standard du français met en jeu cinq signes diacritiques (accents aigu, grave et circonflexe, tréma et cédille) et les deux ligatures "æ" et "œ". S'ajoutent ainsi 16 lettres : é, è, ê, ë, à, â, î, ï, ô, ù, û, ü, ÿ, æ, œ et ç.

Voir aussi : Usage des majuscules en français

Dans la langue française, il existe donc 42 minuscules !

Et, puisque, selon l'Académie française, les majuscules doivent être accentuées; dans la langue française, il existe au total 84 lettres !

Sous Windows (version 10)

Toutes les lettres ne peuvent pas être tapées au clavier !

Il s'agit des majuscules accentuées et des lettres collées :

À Â Ç É È Ê Ë Î Ï Ô Ù Û Ü Ÿ Æ Œ æ œ

Plus rapide que le copier/coller des lettres ci-dessus, pour saisir les caractères non disponibles au clavier, on utilise les Alt codes ( touche + ... )

En Europe occidentale, sous Windows, la page de codes 1252, parfois appelée (à tort) ANSI, et la page de codes 850, aussi appelée DOS Latin 1, sont les pages de codes utilisées.

  1. Majuscules accentuées utilisées à l'initiale d'un mot commun :

    À = + 0192 = + 183 : À (préposition uniquement)
    Â = + 0194 = + 182 : Âne, ...
    Ç = + 0199 = + 128 : Ça, ...
    È = + 0200 = + 212 : Ère, ...
    É = + 0201 = + 144 : Été, ...
    Ê = + 0202 = + 210 : Être, ...
    Î = + 0206 = + 215 : Île, ...
    Ô = + 0212 = + 226 : Ôter, ...

    Au début d'un mot commun, ne figurent jamais : ë, ï, ü, ù, û, ÿ, æ, œ (ni en minuscule, ni en majuscule)

  2. Autres majuscules (dans le mot, sans être le premier caractère) :

    Ë = + 0203 = + 211 : AIGUË, ...
    Ï = + 0207 = + 216 : OUÏE, ...
    Ù = + 0217 = + 235 : OÙ, ...
    Û = + 0219 = + 234 : JEÛN, ...
    Ü = + 0220 = + 154 : CAPHARNAÜM, ...
    Ÿ = + 0159 : ROŸNE, ...

    Æ = + 0198 = + 146 : CURICULUM VITÆ, ...
    Œ = + 0140 : SŒUR, ...

    Le Ÿ est très rarement utilisé en français. Il était utilisé en ancien français comme variante de la lettre ï : roÿne pour roïne (reine).

    Dans un nom propre, ces 16 caractères peuvent être au début du mot : Œdipe, ...

  3. Les minuscules :

    æ = + 0230 = + 145 : ad vitam æternam, cæcum, curriculum vitæ, et cætera, ex æquo, intuitu personæ, ...
    œ = + 0156 : bœuf, cœur, chœur, fœtus, œil*, manœuvr*, mœurs, nœud, œdème, œnolog*, œsophage, œstrogène, œuf, œuvre, sœur, vœu, ...

Idéalement, il faudrait donc retenir par coeur 18 Alt codes

Les codes variant de 128 à 255 correspondent à la page de code 850. Ceux débutant par un "0" correspondent à la page de code 1252.

La table des caractères peut être obtenue, sous Windows 10, clic droit sur le bouton démarrer > Invite de commande > taper "charmap".

Sous Linux (Ubuntu 14.04 LTS)

Aucun code n'est à retenir !

Pour les majuscules accentuées, il suffit de taper la lettre comme si elle était minuscule sauf qu'avant de taper la minuscule, il faut taper la touche qui verrouille les majuscules ( = ou ), la relâcher, puis après avoir tapé la minuscule, retaper sur Verr Maj pour déverrouiller, si nécessaire.

Pour les ligatures, il faut utiliser en plus la touche

Avec un clavier belge :

  1. Majuscules accentuées utilisées à l'initiale d'un mot commun :

    À = puis : À (préposition uniquement)
    Â = puis puis : Âne, ...
    Ç = puis : Ça, ...
    È = puis : Ère, ...
    É = puis : Été, ...
    Ê = puis puis : Être, ...
    Î = puis puis : Île, ...
    Ô = puis puis : Ôter, ...

    Au début d'un mot commun, ne figurent jamais : ë, ï, ü, ù, û, ÿ, æ, œ (ni en minuscule, ni en majuscule)

  2. Autres majuscules (dans le mot, sans être le premier caractère) :

    Ë = + puis puis : AIGUË, ...
    Ï = + puis puis : OUÏE, ...
    Ù = puis : OÙ, ...
    Û = puis puis : JEÛN, ...
    Ü = + puis puis : CAPHARNAÜM, ...
    Ÿ = + puis puis : ROŸNE, ...

    Æ = puis + : CURICULUM VITÆ, ...
    Œ = puis + : SŒUR, ...

    Le Ÿ est très rarement utilisé en français. Il était utilisé en ancien français comme variante de la lettre ï : roÿne pour roïne (reine).

    Dans un nom propre, ces 16 caractères peuvent être au début du mot : Œdipe, ...

    Mieux vaut faire puis + que le grand écart avec + + ...

    Rappel : Quand la touche est enfoncée, une petite led s'affiche au clavier.

  3. Les minuscules :

    æ = + (q et non a !): ad vitam æternam, cæcum, curriculum vitæ, et cætera, ex æquo, intuitu personæ, ...
    œ = + : bœuf, cœur, chœur, fœtus, œil*, manœuvr*, mœurs, nœud, œdème, œnolog*, œsophage, œstrogène, œuf, œuvre, sœur, vœu, ...

La table des caractères peut être obtenue, sous Ubuntu, en tapant + + ( pour ouvrir un terminal, puis y ) taper "gucharmap".