Introduction aux jeux de caractères

Transcription

Introduction aux jeux de caractères
Introduction aux jeux de caractères
La notion de jeu de caractères (charset en anglais) est une notion primordiale pour tout développeur
Web.
•
L'ASCII (American Standard Code for Information Interchange) : Fut le premier de tous.
Ce qu'il faut savoir, c'est que les ordinateurs fonctionnent par bits.
Or avec un bit on peut coder 2 caractères. Avec deux bits on peut en coder 4 (22 = 4), avec trois 8 (23
= 8) , avec quatre 16 (24 = 16), avec cinq 32 (25 = 32), avec six 64 (25 = 64) et avec sept 128 (27 = 128).
http://www.table-ascii.com/
http://fr.wikipedia.org/wiki/ASCII
L'ASCII définit 128 caractères numérotés de 0 à 127 et codés en binaire de 0000000 à 1111111. Sept
bits suffisent donc pour représenter un caractère codé en ASCII (27 = 128). Le huitième étant un
dispositif de sécurité, ce qu'on appelle un bit de parité. Ce bit de parité permettait de détecter une
éventuelle erreur qui serait survenue lors de la transmission de l'octet. Remarque, il fut décidé que le
bit de parité, soit en fait positionné en première position parmi les 8 bits utilisés pour représenter le
caractère. 128 caractères sont donc suffisant pour mémoriser notre alphabet latin, les chiffres, des
éléments de ponctuation (...), mais pas suffisant pour stocker nos caractères spéciaux (accents,
cédilles...). Par exemple, le caractère "a" est associé à "01100001" et "A" à "01000001".
jeux de caractères.docx
1/6
Comme nous l'avons mentionné précédemment, l'ASCII était peut-être suffisant pour échanger de
sommaires informations en anglais, mais ne l'était pas pour représenter les autres langues du monde
occidental.
Pour écrire correctement le français on a besoin :
• des 52 lettres de l'alphabet latin minuscules et majuscules (donc 2 fois 26)
• des 28 lettres avec signes diacritiques (àÀ çÇ éÉ èÈ êÊ ëË îÎ ïÏ ôÔ ùÙ ûÛ üÜ ÿŸ)
• des 10 chiffres arabes (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
• des 40 signes de ponctuation, guillemets et autres symboles courants
• des 04 ligatures issues du latin (æÆ œŒ)
• des 04 lettres d'origine étrangère (ñÑ öÖ)
Soit un total de 138 caractères.
On décida donc d'étendre ce jeu de caractères en utilisant le premier bit de l'octet pour coder luiaussi une information, laissant ainsi tomber le bit de parité. On obtient donc un jeu étendu de 8 bits
utiles (28 = 256), soit 256 caractères représentables, dont les 128 premiers sont communs à tous les
jeux étendus, car issus de l'ancêtre commun (ASCII).
•
En ISO 8859-1 (souvent appelée Latin-1), les caractères sont codés sur 8 bits. Il permet donc de
représenter 28 soit 256 caractères différents. Les 256 caractères sont suffisants pour mémoriser
notre alphabet latin avec les caractères spéciaux (accents, cédilles...). Donc, presque tous les
caractères du français.
•
L'ISO 8859-15 (souvent appelée Latin-9) est une variante réactualisée du Latin-1. Toujours codée sur
8 bits, il ajoute notamment le caractère euro (€) et les caractères œ et Œ à la place de certains
caractères peu utilisés.
•
Le Windows-1252 (parfois appelé AINSI) est un encodage propre aux ordinateurs Windows. S'il est
lui aussi codé sur 8 bits, certains caractères diffèrent des codages ISO vu ci-dessus.
•
Le MacRoman est un encodage propre aux ordinateurs Apple Macintosh. S'il est lui aussi codé sur 8
bits, certains caractères diffèrent des codages ISO et Windows-1252 vu ci-dessus.
•
L'UTF-8 est un encodage dit "Unicode". L'Unicode vise à donner à tout caractère quelque soit son
alphabet (latin, cyrillique, asiatique...) un code unique et compatible sur toutes les plateformes
(Windows, Mac, Unix). L'UTF-8 est codé sur 8 à 32 bits ce qui permet d'encoder un nombre de
caractères quasi illimité. Donc, qui permet d'encoder toutes les langues, du français au japonais en
passant par l'arable.
•
L'UTF-16 est un codage des caractères définis par Unicode où chaque caractère est codé sur une
suite de un ou deux mots de 16 bits.
Les caractères spéciaux en HTML
À l'origine, les fichiers HTML sont faits pour être encodé en ASCII, c'est à dire sans caractères spéciaux.
Pour pallier à ce problème, le langage HTML permet de traduire chaque caractère spécial par un code
alpha numérique comme décrit dans la table ci-après.
Aujourd'hui encore, utiliser cette table de conversion permet de se prémunir contre les incompatibilités.
Imaginons par exemple que je crée une page Web sur Mac et l'enregistre en MacRoman : si un visiteur
jeux de caractères.docx
2/6
vient voir ma page depuis un PC, il risque de voir mes accents remplacé par un code incompréhensible
(ex : «J'aime l'√©at√©a» au lieu de «J'aime l'été»).
En HTML, tous les caractères spéciaux peuvent être remplacés par un code commençant par &
(esperluète ou « et commercial ») et terminant par ; (point virgule). En voici une liste non exhaustive :
Code
Résultat dans le navigateur
 
"
<
>
«
»
&
€
¥
©
®
[Espace insécable]
"
<
>
«
»
&
€
¥
©
®
Les caractères accentués ou encore les lettres avec cédilles sont également des caractères spéciaux.
Chacun a donc sa représentation en HTML. En voici quelques exemples :
Code
Résultat dans le navigateur
&agrave;
&acirc;
&eacute;
&egrave;
&ecirc;
&icirc;
&iuml;
&oelig;
&ugrave;
&ucirc;
&ccedil;
à
â
é
è
ê
î
ï
œ
ù
û
ç
Ces caractères peuvent également être utilisés en majuscule :
Code
Résultat dans le navigateur
&Agrave;
&Acirc;
&Eacute;
&Egrave;
&Ecirc;
&Icirc;
&Iuml;
&OElig;
&Ugrave;
&Ucirc;
&Ccedil;
À
Â
É
È
Ê
Î
Ï
Œ
Ù
Û
Ç
jeux de caractères.docx
Voir aussi :
http://alexandre.alapetite.fr/doc-alex/alx_special.html
3/6
Inconvénients :
• c'est long et laborieux;
• ça oblige à apprendre les codes par cœur;
• la lisibilité du code s'en ressent (Il a neig&eacute; &agrave; No&euml;l.).
Cela dit, il faut savoir...
• tout document contenant du texte (fichiers « texte brut » en .txt ou .html), sont enregistrés avec un
jeu de caractères précis;
• que l'encodage se produit au moment d'enregistrer le fichier;
• que pour être correcte, la déclaration d'encodage doit correspondre à celle qui fut réellement
utilisée;
• qu'il ne suffit pas de changer la déclaration d'encodage pour qu'un changement d'encodage se
produise;
• que les éditeurs de texte ne sont pas également fiables en matière d'encodage et de changement
d'encodage.
Pour être sûr de l'encodage des caractères de vos pages HTML, vous pouvez vérifier dans les paramètres
de configuration de votre éditeur (Dreamweaver, Notepad++, UltraEdit, etc.) quel est l'encodage utilisé
par défaut.
Dans Dreamweaver : Edition / Préférences / Polices / Paramètres de la police : Unicode
Dans notepad++ : Encodage / Encoder en UTF-8
Dans UltraEdit (à vérifier nouvelle version) :
Avancé / Configuration / Général /
Dans la section : Chargement/Sauvegarde/Conversions
 Écrire l'en-tête UTF-8 BOM pour TOUS les fichiers UTF-8 (lorsqu'ils sont sauvegardés)
 Écrire l'en-tête UTF-8 BOM pour les fichiers créés avec ce programme (si l'option ci-dessus
n'est pas activée).
 Sauvegarder les fichiers dans leur format d'origine (UNIX/MAC/DOS)
Si les caractères accentués ou autres caractères spéciaux de votre page sont remplacés par des carrés,
des points d'interrogation, ou d'étranges séries de lettres comme « é » ou « ç », vous avez
probablement un problème d'encodage des caractères.
Le problème le plus courant vient du fait que le navigateur ne sait pas quel encodage utiliser pour
afficher la page, soit parce qu'aucune information ne lui est transmise, soit parce que l'information est
erronée.
jeux de caractères.docx
4/6
Nous devons ajouter à chaque page HTML une balise META qui répète l'information donnée par l'en-tête
HTTP. Cette balise META est utile pour les utilisateurs qui enregistrent les pages web en local, sur leur
ordinateur.
Où se trouve la déclaration d'encodage dans un fichier XHML?
•
Soit au tout début du document sous forme de déclaration XML
<?xml version="1.0" encoding="iso-8859-1"?> (pas nécessaire, mais fortement conseillée si l'encodage
du document est différent de UTF-8 ou UTF-16)
•
Soit dans l'en-tête du document (X)HTML dans un élément meta
(obligatoire en XHTML Strict)
(Encodage utilisé anciennement, nous devions encoder les caractères accentués. Certains l'utilise encore.)
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Maintenant :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Problèmes d'encodage lors de la validation de votre document XHTML au W3C
Méthode pour changer l'encodage d'un fichier :
1.
2.
3.
4.
5.
6.
7.
choisissez un éditeur de texte fiable;
éditez-y le fichier à modifier;
sélectionnez le nouvel encodage souhaité;
harmonisez la déclaration d'encodage en conséquence;
enregistrez;
vérifiez en affichant le fichier dans un navigateur;
passez le fichier au validateur HTML du W3C.
Voir autre document intitulé « Modifier l'encodage pour un fichier en utf-8 ».
UTF-8 ou ISO-8859-1 ?
Ressemblances et différences entre ISO-8859-1 et UTF-8
ISO-8859-1
UTF-8
est une norme internationale
est une norme internationale
reste compatible avec ASCII
reste compatible avec ASCII
tous les caractères sont codés sur 1 octet
les caractères sont codés sur 1, 2 ou 3 octets
est l'encodage par défaut sur Internet
n'est pas l'encodage par défaut sur Internet
permet d'écrire dans 18 langues
permet d'écrire dans toutes les langues
jeux de caractères.docx
5/6
Derniers conseils
1. Rédigez vos documents HTML en utilisant le jeu de caractères Unicode (encodage utf-8).
2. Identifiez bien l’encodage utilisé dans l’entête de vos pages HTML.
3. Enregistrez vos fichiers avec l’option d’encodage utf-8.
Définition :
Unicode est une norme informatique, développée par le Consortium Unicode, qui vise à donner à tout
caractère de n’importe quel système d’écriture un nom et un identifiant numérique, et ce de manière
unifiée, quelle que soit la plate-forme informatique ou le logiciel.
jeux de caractères.docx
6/6