|
ASCII (Acronyme
de "American Standard Code for Information Interchange")
La mémoire de l'ordinateur conserve toutes les
données sous forme numérique. Chaque caractère
possède son équivalent en code numérique. C'est
le Code ASCII - "American Standard Code for Information
Interchange".
Le code Ascii 0 à
127
Le code ASCII de base représente 128 caractères
(sur 7 bits = 128 valeurs, caractères de 0 à 127).
Créé pour la langue anglaise, il ne contient pas de
caractères spécifiques à une autre langue.
Il a donc falu créer le code ascii étendu pour obtenir
les caractères accentués.
Le code ASCII étendu 128
à 255
Le code ASCII a été étendu à 8 bits
pour pouvoir coder plus de caractères (sur 8 bits = 1 octet
= 256 valeurs). L'espace obtenu, valeurs de 128 à 255, peut
maintenant contenir les caractères accentués selon
la nécessité du pays ! (128 à 255 = espace
réservé pour l'encodage selon le pays).
Ces 256 valeurs codent les caractère de contrôle,
les lettres majuscules et minuscules, les chiffres, les marques
de ponctuation, les symboles et par exemple nos caractères
accentués ISO-8859-1 (Latin1). En modifiant le 5ème
bit, on passe de majuscules à minuscules (ajouter 32 au code
ASCII en base décimale).
| 0 à 31 |
caractères
de contrôle, tel que retour à la ligne (CR), Bip
sonore (BEL) |
| 32 à 47 |
caractères
spéciaux |
| 48 à 57 |
chiffres |
| 58 à 64 |
caractères
spéciaux |
| 65 à 90 |
caractères majuscules |
| 92 à 96 |
caractères spéciaux |
| 97 à 122 |
caractères minuscules |
| 123 à 127 |
caractères spéciaux
|
| 128 à 255 |
selon la table de caractère
du pays (voir ci-dessous) |
Tables de caractères
Des zones territoriales sont établies en fonction du langage
écrit.
Chaque zone utilise sa propre table de caractère Ascii
128 à 255. Elle peut être choisie, dans le navigateur
ou automatiquement par un meta tag dans le code html.
| Nom de Table |
Zone correspondante |
Standard ISO |
| Unicode |
Universel, International |
UTF-8 |
| Latin-1 |
Europe de l'Ouest, Amérique
Latine. |
ISO-8859-1 |
| Latin-2 |
Europe Centrale, Europe de l'Est |
ISO-8859-2 |
| Latin-3 |
Europe du Sud-Est |
ISO-8859-3 |
| Latin-4 |
Scandinavie, Baltique |
ISO-8859-4 |
| Grec |
Grèce |
ISO-8859-7 |
| Japonais |
Japon |
EUC-JP ou Shift_JIS |
| etc. |
|
|
Table de caractères ASCII étendus :
ascii 000-127 / ascii
128-255 / ascii spéciaux,
ascii complète
du Latin-1 dans une fenêtre séparée.
Echapper les caractères accentués
(échapper=coder)
Les normes html demandent de respecter le codage des tables
de caractères. On ne peut pas écrire les lettres accentuées
(ö, è, à, é, etc.) et autres caractères
spéciaux dans le code html.
Sauf si vous placez entre les balises <head>...et...</head>
de votre page la balise
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-1">.
Ce qui permet de résoudre ce problème, uniquement
pour les visiteurs ayant installé les polices de caractères
accentuées, conforme à la norme iso-8859-1. Car les
navigateurs actuels sont permissifs, mais vous devez savoir que
vos pages ne seront peut-être plus lisibles dans des pays
utilisant des jeux de caractères non latins.
En outre les caractères accentués sauteront vraisemblablement
dans les moteurs de recherche anglophones, ce point est à
méditer.
Il est donc conseillé d'utiliser le codage conforme au norme
W3C. Le choix idéal est de mettre le meta tag adéquat
et d'échaper les caractères aux normes du W3C. Les
programmes tel que Dreamweaver le font automatiquement !
Page de test : meta_iso_avec.htm
et meta_iso_sans.htm
Pour échapper un caractère accentué (appel
d'entité)
On utilise une combinaison précédée du caractère
" & " et terminée par un " ;
" (point-virgule).
En html é se code é le plus lisible
et le plus facile à mémoriser !
Moins lisible, en ASCII é se code é
(voir les tables de caractères)
Il suffit de se souvenir d'ouvrir avec "&"
et de fermer avec ";" De choisir la lettre à
coder en minuscule ou majuscule "e" ou "E".
De mettre à sa suite le code (que l'on aura mémorisé)
de l'accent concerné :
acute = aigu (é = é)
grave = grave (è= è)
grave = grave (È= È)
circ = circonflexe (î = î)
uml = tréma (ü = ü)
cedil = cédille (ç = ç)
Pour obtenir cette phrase : Un éléphant apparaît
devant moi et me marche sur le pied, aïe!
Il faut coder les accents comme ceci (norme html - ISO LATIN-1)
:
Un éléphant
apparaît devant moi
et me marche sur le pied, aïe!
Il faut coder les accents comme ceci (norme ASCII - ISO LATIN-1)
:
Un éléphant
apparaît devant moi
et me marche sur le pied, aïe!
Sans quoi le résultat pourrait ressembler à :
Un ZèlZèphant apparaÓt devant moi et me marche sur
le pied, a…e!
De plus les caractères spéciaux
étant utilisés dans la syntaxe HTML doivent être
échappés pour ne pas être confondu avec leur
équivalent. Comme pour XML qui fourni cinq références
d'entités :
< pour (<)
: le signe inférieur à (ou chevron ouvrant).
> pour (>)
: le signe supérieur à (ou chevron fermant).
& pour (&)
: l'esperluette (ouverture de caractère échappé).
"
pour (") : le signe guillemets
(ouverture et fermeture de valeur de paramètre).
Le suivant n'est pas obligatoire en HTML, mais seulemnt en XML :
' pour (')
: le signe apostrophe ou simple quotte (ouverture et fermeture de
valeur de paramètre).
Rassurez-vous, la plupart des éditeurs html font automatiquement
l'encodage! Si non, vous écrivez les carractères accentués
et à la fin vous executez la commande "rechercher et
remplacer" : "é" remplacer
par "é", etc. ATTENTION : ne faites pas rechercher
et remplacer pour les 5 entités XML !
UNICODE UTF-8 : page
de test UTF-8 <<< Le fichier est d'un format binaire
différent en UTF-8 !!!
Généralités sur unicode
Unicode est un système dans lequel les
signes ou éléments de toutes les cultures d'écriture
connues sont fixés. Par ce système, il devient possible
de dire à un ordinateur quel signe on veut voir représenté.
La condition préalable est naturellement que l'ordinateur
ou le programme exécuté connaisse le système
unicode.
Unicode s'efforce d'englober complètement tous les signes
connus des cultures d'écriture présentes et passées.
Les caractères sont catalogués par classe et reçoivent
une valeur de caractères. Tous les caractères et sortes
de caractères imaginables sont concernés. Pour les
caractères de contrôle tels que les traits d'union,
les espaces imposés ou les tabulations existent des unicodes.
Les caractères de formules mathématiques sont représentés
tout autant que les signes représentant des syllabes ou des
mots des cultures de l'écriture de l'Extrême Orient.
Même les différentes parties de caractères comme
par exemple les accents ou trémas sur les caractères
français ont leur propre unicode. Les caractères peuvent
être aussi combinés de façon dynamique - ainsi
il existe bien aussi naturellement un "é" français,
mais la même lettre peut être créée à
partir de "e" et de l'accent sur le caractère.
Outre le simple adressage d'un signe ou d'un élément,
un jeu de propriétés est aussi défini dans
le système unicode pour chaque signe. Le sens de l'écriture
(pour l'arabe par exemple le sens d'écriture est de droite
à gauche) fait partie de la propriété du signe.
D'innombrables résultats des recherches sur la science des
langues au niveau mondial sont rassemblées dans le système
unicode.
Le consortium Unicode, fondé en 1991 et constitué
de linguistes et autres spécialistes, recherche les caractères
à adopter, Les valeurs de caractères accordées
ont une force obligatoire. Depuis la version 2.0, le système
Unicode est aussi synchronisé avec la norme internationale
ISO/IEC 10646. C'est important dans la mesure où HTML depuis
la version 4.0 ainsi que XML depuis la version 1.0 misent sur la
norme ISO/IEC 10646. Quand vous voulez dons savoir comment on doit
noter un certain signe en HTML ou en XML, vous devez rechercher
dans les tableaux de caractères Unicode quelle valeur a le
signe désiré. Ensuite, vous pouvez noter le signe
désiré dans le texte source du fichier HTML ou XML,
par une notation numérique telle que par exemple ⚏
(forme décimale) ou bien ⚏ (forme hexadécimale
avec x).
Les valeurs de caractères des signes englobés par
Unicode étaient encore récemment
exprimés exclusivement par un nombre long de deux octets.
De cette façon, il est possible de lister jusqu'à 65536
caractères différents dans le système (2
octets = 16 bits = 216 combinaisons).
Dans la version complète
Unicode 3.0 de septembre 1999 49.194 caractères du monde
entier étaient
déjà listés - la limite de 65536 était
déjà bien proche.
Dans la version 3.1 de mars
2001, 44,946 nouveaux
caractères ont été adoptés.
Par exemple des signes d'écritures
historiques. Et c'est ainsi que la version 3.1 connaît
déjà
94.140 caractères, ce pour quoi la limite de deux octets
devait être franchie.
Le schéma à deux octets
désigné dans le système Unicode comme Basic
Multilingual Plane (BMP) , est remplacé pour cette raison
par un schéma à quatre octets, qui permet d'adresser
le nombre confortable de 4.294.967.296 caractères (4
octets = 32 bits = 232 combinaisons de bits).
Mais encore...
La contrainte des codages
de type ASCII provient du fait qu'ils sont totalement incompatibles
entre eux : il est impossible dans cette situation d'écrire
un texte exploitant en même
temps des caractères de plusieurs jeux différents.
La norme Unicode a été développée
principalement pour pouvoir palier à ce problème
: elle contient à elle seule l'ensemble des caractères
utilisés dans toutes les langues. Elle est définie
dans la norme ISO 10646, qui distingue deux méthodes d'encodage à 16
(2 octets) bits et 32 bits (4 octets) : UCS-2 (16 bits) et UCS-4
(32 bits). UCS-2 étant codé sur 16 bits est capable
de géré (2^16)^2 = 65536 caractères alors
que UCS-4 codé sur 32 bits gère (2^32)^2 = 4 294
967 296 caractères.
Un inconvénient et non des moindres à l'Unicode
est que la norme préserve la taille d'encodage de chaque
caractères, ainsi un texte en français est en gros
2 fois plus important en unicode que le même texte dans son équivalent
ASCII. Par contre un texte écrit en japonais sera de taille équivalente
s'il est écrit avec le jeu Unicode ou le jeu JIS (jeu propre
au japonais).
UTF-8 : une transformation de l'encodage Unicode.
La transformation UTF-8 (UCS Transformation format 8-Bits) règle
ce problème en fournissant une méthode d'encodage
variable entre 1 et 6 octets. Dans ce jeu, les 127 caractères
de l'ASCII (7bits) sont codés sur 1 octet, la plupart des
caractères non-idéographiques sont codés sur
2 octets et le reste des caractères Unicode sont codés
sur 3 octets (le premier octet indique le nombre d'octets sur lesquels
le caractère est codé). Ainsi UTF-8 fourni une méthode
bien plus légère que Unicode : la taille du texte
variera en fonction des caractères utilisés.
Note : Un texte écrit en (en-US) a donc exactement la même
taille que s'il était écrit en UTF-8, car le jeu
US n'utilise que 127 caractères (ASCII 7 bits) qui sont
inclus en standard dans UTF-8.
Il existe d'autres codages UTF-7 (supporté par ASP.NET) ou UTF-16 :
la seule différence avec UTF-8 est le nombre de bits utilisés
lors de la transformation.
Typiquement dans une page Web classique, vous pouvez utiliser
l'entête suivante pour pouvoir utiliser la transformation
UTF-8 dans la page :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
à suivre...
http://www.unicode.org/
et FR : http://www.unicode.org/standard/translations/french.html
|