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 à â é è ê î ï œ ù û ç à â é è ê î ï œ ù û ç Ces caractères peuvent également être utilisés en majuscule : Code Résultat dans le navigateur À Â É È Ê Î Ï Œ Ù Û Ç À Â É È Ê Î Ï Œ Ù Û Ç 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é à Noë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