Quelques tables de caractères

ASCII 7 bits
000102030405060708090A0B0C0D0E0F
000102030405060708090A0B0C0D0E0F
00
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
00
10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
20
 
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
20
30
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
30
40
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
40
50
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
50
60
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
60
70
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
 
70
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
A0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
A0
B0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
B0
C0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
C0
D0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
D0
E0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
E0
F0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
F0
ASCII
ASCII
ISO-8859-1 (ISO Latin1)
000102030405060708090A0B0C0D0E0F
000102030405060708090A0B0C0D0E0F
00
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
00
10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
20
 
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
20
30
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
30
40
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
40
50
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
50
60
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
60
70
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
 
70
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
A0
 
¡
¢
£
¤
¥
¦
§
¨
©
ª
«
¬
 
®
¯
A0
B0
°
±
²
³
´
µ
·
¸
¹
º
»
¼
½
¾
¿
B0
C0
À
Á
Â
Ã
Ä
Å
Æ
Ç
È
É
Ê
Ë
Ì
Í
Î
Ï
C0
D0
Ð
Ñ
Ò
Ó
Ô
Õ
Ö
×
Ø
Ù
Ú
Û
Ü
Ý
Þ
ß
D0
E0
à
á
â
ã
ä
å
æ
ç
è
é
ê
ë
ì
í
î
ï
E0
F0
ð
ñ
ò
ó
ô
õ
ö
÷
ø
ù
ú
û
ü
ý
þ
ÿ
F0
ISO-8859-1
ISO-8859-1
ISO-8859-15 (ISO Latin9)
000102030405060708090A0B0C0D0E0F
000102030405060708090A0B0C0D0E0F
00
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
00
10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
20
 
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
20
30
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
30
40
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
40
50
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
50
60
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
60
70
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
 
70
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
A0
 
¡
¢
£
¥
Š
§
š
©
ª
«
¬
 
®
¯
A0
B0
°
±
²
³
Ž
µ
·
ž
¹
º
»
Œ
œ
Ÿ
¿
B0
C0
À
Á
Â
Ã
Ä
Å
Æ
Ç
È
É
Ê
Ë
Ì
Í
Î
Ï
C0
D0
Ð
Ñ
Ò
Ó
Ô
Õ
Ö
×
Ø
Ù
Ú
Û
Ü
Ý
Þ
ß
D0
E0
à
á
â
ã
ä
å
æ
ç
è
é
ê
ë
ì
í
î
ï
E0
F0
ð
ñ
ò
ó
ô
õ
ö
÷
ø
ù
ú
û
ü
ý
þ
ÿ
F0
ISO-8859-15
ISO-8859-15
CP1252 (WinLatin1)
000102030405060708090A0B0C0D0E0F
000102030405060708090A0B0C0D0E0F
00
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
00
10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
20
 
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
20
30
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
30
40
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
40
50
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
50
60
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
60
70
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
 
70
80
 
ƒ
ˆ
Š
Œ
 
Ž
 
80
90
 
˜
š
œ
 
ž
Ÿ
90
A0
 
¡
¢
£
¤
¥
¦
§
¨
©
ª
«
¬
 
®
¯
A0
B0
°
±
²
³
´
µ
·
¸
¹
º
»
¼
½
¾
¿
B0
C0
À
Á
Â
Ã
Ä
Å
Æ
Ç
È
É
Ê
Ë
Ì
Í
Î
Ï
C0
D0
Ð
Ñ
Ò
Ó
Ô
Õ
Ö
×
Ø
Ù
Ú
Û
Ü
Ý
Þ
ß
D0
E0
à
á
â
ã
ä
å
æ
ç
è
é
ê
ë
ì
í
î
ï
E0
F0
ð
ñ
ò
ó
ô
õ
ö
÷
ø
ù
ú
û
ü
ý
þ
ÿ
F0
CP1252
CP1252
CP850 (DOSLatin1)
000102030405060708090A0B0C0D0E0F
000102030405060708090A0B0C0D0E0F
00
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
00
10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
20
 
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
20
30
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
30
40
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
40
50
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
50
60
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
60
70
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
 
70
80
Ç
ü
é
â
ä
à
å
ç
ê
ë
è
ï
î
ì
Ä
Å
80
90
É
æ
Æ
ô
ö
ò
û
ù
ÿ
Ö
Ü
ø
£
Ø
×
ƒ
90
A0
á
í
ó
ú
ñ
Ñ
ª
º
¿
®
¬
½
¼
¡
«
»
A0
B0
Á
Â
À
©
¢
¥
B0
C0
ã
Ã
¤
C0
D0
ð
Ð
Ê
Ë
È
ı
Í
Î
Ï
¦
Ì
D0
E0
Ó
ß
Ô
Ò
õ
Õ
µ
þ
Þ
Ú
Û
Ù
ý
Ý
¯
´
E0
F0
 
±
¾
§
÷
¸
°
¨
·
¹
³
²
 
F0
CP850
CP850
MacRoman (Macintosh)
000102030405060708090A0B0C0D0E0F
000102030405060708090A0B0C0D0E0F
00
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
00
10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
20
 
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
20
30
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
30
40
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
40
50
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
50
60
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
60
70
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
 
70
80
Ä
Å
Ç
É
Ñ
Ö
Ü
á
à
â
ä
ã
å
ç
é
è
80
90
ê
ë
í
ì
î
ï
ñ
ó
ò
ô
ö
õ
ú
ù
û
ü
90
A0
°
¢
£
§
ß
®
©
´
¨
Æ
Ø
A0
B0
±
¥
µ
π
ª
º
Ω
æ
ø
B0
C0
¿
¡
¬
ƒ
«
»
 
À
Ã
Õ
Œ
œ
C0
D0
÷
ÿ
Ÿ
D0
E0
·
Â
Ê
Á
Ë
È
Í
Î
Ï
Ì
Ó
Ô
E0
F0
Ò
Ú
Û
Ù
ı
ˆ
˜
¯
˘
˙
˚
¸
˝
˛
ˇ
F0
MacRoman
MacRoman
Changer les valeurs par défaut




À la même position dans toutes les tables
glyphe code
unicode
référence de caractère codage
UTF-8
numériqueentité
ASCII          
ISO-8859-1          
ISO-8859-15          
CP1252          
CP850          
MacRoman          
Le même glyphe dans toutes les tables
position en...
décimalhexa
ASCII    
ISO-8859-1    
ISO-8859-15    
CP1252    
CP850    
MacRoman    

Documentation

1. Latin 1 et autres jeux 8 bits adaptés au français

Les quelques tables de caractères regroupées sur cette page sont celles que l'on rencontre le plus souvent sur des ordinateurs dont la langue par défaut est le français. Ce sont toutes des tables « 8 bits », c'est-à-dire que chaque caractère est représenté par un et un seul octet, ce qui fait donc un maximum de 256 caractères différents par table (2 à la puissance 8).

Bien entendu, ces tables ne sont pas limitées au français. Par exemple, d'après La série de normes ISO 8859, la table ISO-8859-1 concerne aussi bien l'albanais, l'allemand, l'anglais, le catalan, le danois, l'espagnol, le féroen, le finnois, le galicien, l'irlandais, l'islandais, l'italien, le néerlandais, le norvégien, le portugais et le suédois.

ASCII

La table US-ASCII ou tout simplement ASCII est en réalité une table 7 bits. Elle contient 95 caractères imprimables depuis l'espace (numérotée 32) jusqu'au tilde (numéroté 126). Elle inclut la plupart des signes de ponctuation utilisés dans les langues latines, les lettres non accentuées (majuscules et minuscules), les chiffres de 0 à 9, et quelques caractères supplémentaires (des opérateurs arithmétiques par exemple). En revanche, on n'y trouve aucune des lettres avec diacritiques (accents, trémas ou cédilles) indispensables pour écrire correctement le français.

Noter qu'il a existé des variantes régionales de la table ASCII, incluant des lettres avec diacritiques à la place de certains signes de ponctuation moins utilisés dans ASCII. Voir par exemple ISO-646-FR, où les caractères « é » et « è » sont venus remplacer « { » et « } » respectivement, au grand dam des programmeurs C. Mais toutes les fois où vous entendrez nommer « ASCII » ou « L'ASCII étendu » (avec article défini) un jeu de caractères 8 bits, vous pouvez être sûrs que ce terme est impropre, et désigne probablement CP1252 ou CP850, voire CP437.

ISO-8859-1

Cette norme ISO, également nommée Latin 1, est un sur-ensemble de la table ASCII. Parmi les 96 caractères supplémentaires, on trouve la plupart des lettres avec diacritiques utiles en français, que ce soit en majuscules ou en minuscules, une exception notable étant le Y majuscule avec tréma (Ÿ). On y trouve aussi les ligatures æ et Æ, mais pas œ ni Œ. Les deux autres apports principaux pour l'écriture du français sont l'espace insécable et les guillemets français « ».

ISO-8859-15

Cette autre norme ISO, également nommée Latin 9, est une légère modification de la table ISO-8859-1 comblant certains de ses manques. Par exemple, on y trouve un Ÿ et les ligatures œ et Œ, ainsi que le caractère euro (€). Du fait que les deux tables contiennent exactement le même nombre de caractères au total (95 + 96 = 191), certains, considérés comme moins importants, ont dû être sacrifiés, tels que les fractions ¼, ½ et ¾. Pour la petite histoire, c'est d'abord le besoin de comparer facilement ISO-8859-1 et ISO-8859-15 qui m'a donné l'idée de réaliser cette page.

CP1252

La table CP1252, définie par Microsoft, est la table par défaut des PC sous MS-Windows en version francophone. Cette table est un sur-ensemble de la table ISO-8859-1, ce qui permet une compatibilité parfaite avec la norme ISO-8859-1 pourvu qu'aucun caractère de codes 128 à 159 ne soit utilisé. En réalité, je devrais parler des tables CP1252 plutôt que de la table CP1252, car plusieurs ajouts successifs ont été faits dans cette table sans qu'elle ne change de nom. Par exemple, une ancienne version de CP1252 ne contenait pas le caractère euro (€) alors que celui-ci existe maintenant à la position 128.

CP850

La table CP850 est celle utilisée par le système d'exploitation MS-DOS sur les machines qui ont un MS-Windows en CP1252. Cette table permet de représenter tous les caractères de ISO-8859-1 (quoique à des positions différentes) tout en conservant une compatibilité avec la table CP437 (tous les caractères communs aux deux tables sont aux mêmes positions).

Note : dans les documentations Microsoft, on appelle ANSI les tables utilisées à travers l'interface graphique Windows (CP1252 pour le français) et OEM celles utilisées dans une fenêtre DOS (CP850 pour la langue française).

CP437

La table CP437 enfin, quoique je la présente après, est plus ancienne que les quatres tables 8 bits décrites ci-dessus (je mets à part la table ASCII 7 bits qui est à la fois l'ancètre et le dénominateur commun de toutes les autres). Elle était déjà présente sur les PC IBM au début des années 1980, soit bien avant la naissance de MS-Windows. Datant de l'époque où les écrans étaient principalement en mode texte (25 lignes de 80 colonnes), on y trouve de nombreux petits symboles ainsi que des caractères permettant de dessiner des cadres . Par ailleurs, cette table n'étant pas destinée à communiquer via Internet, toutes les positions sauf une (le code nul) sont utilisées.

MacRoman

Alors que les tables CP850 et CP1252 se trouvent de préférence sur les PC avec MS-Windows, la table MacRoman est le jeu de caractères par défaut sur les ordinateurs Macintosh et le système d'exploitation Mac OS (en français). Noter que, de même que pour CP1252, et contrairement aux normes ISO, certaines modifications ont été faites sans que le nom change ; par exemple, à la position 219, le caractère euro (€) a remplacé le précédent symbole monétaire (¤) dans la version 8.5 de Mac OS.

Autre particularité de cette table, elle comporte à la position 240 un caractère dont le point de code Unicode fait partie de la « zone à usage privé » E000-F8FF. Sur un Macintosh vous pourrez peut-être voir le logo Apple à cette position, mais moi, sur Windows, je n'y vois qu'un point d'interrogation avec Mozilla ou Firefox, un carré vide avec Internet Explorer.

2. Unicode : blocs de caractères et code de couleurs

Alors que chacune des tables présentées dans la section précédente ne contient qu'une minuscule partie de l'ensemble des caractères utilisés par l'ensemble des langues parlées sur la planète, Unicode tend à l'exhaustivité. Ainsi, tous les caractères présents dans un jeu de caractère normalisé doivent se retrouver dans Unicode. C'est pour cette raison qu'Unicode sert de référence universelle pour chaque caractère, que ce soit sous la forme d'un point de code (code point en anglais) ou sous la forme de son codage en UTF-8.

Unicode regroupe les codes représentant les caractères dans des « blocs » de codes consécutifs. Les deux premiers blocs reprennent l'intégralité de la norme ISO 8859-1 (Latin1), le premier des deux correspondant à la norme ASCII. En dehors de ces deux premiers, chacun des blocs regroupe des caractères appartenant à un même type d'écriture et partageant les mêmes fonctionnalités. Par exemple, on a un bloc pour les lettres grecques, un autre pour les symboles monétaires, et ainsi de suite. Les caractères déjà présents dans les deux premiers blocs ne sont pas dupliqués ailleurs, ainsi les caractères $ (ASCII) et ¥ (Latin-1) ne sont pas rangés avec € parmi les autres symboles monétaires,

Les sept tables 8 bits ci-dessus regroupent à elles toutes des caractères appartenant à une bonne vingtaine de blocs Unicode différents. Afin de s'y retrouver plus facilement, j'ai choisi un code de couleurs permettant d'avoir tout de suite une idée approximative de l'emplacement de chaque caractère dans Unicode : deux caractères de la même couleur ne sont pas forcément dans le même bloc, mais deux caractères d'un même bloc sont toujours de la même couleur.

Le tableau ci-dessous montre tous les blocs Unicode utilisés, avec l'intervalle des caractères définis par chaque bloc, la couleur que j'ai choisie, et un petit commentaire. Il y a aussi à chaque fois un pointeur vers les documents PDF de référence sur le site du consortium Unicode, aussi bien en français qu'en anglais.

Intervalles et couleurs Exemples Fichiers PDF sur www.unicode.org Commentaires
U+0000 .. U+007F
L
[fr] Commandes C0 et latin de base
[en] C0 Controls and Basic Latin
Ceci constitue la table ASCII 7 bits. Les caractères sont en fait dans l'intervalle U+0020..U+007E tandis que U+0000..U+001F et U+007F sont les commandes C0.
U+0080 .. U+00FF
Ç
[fr] Commandes C1 et supplément Latin-1
[en] C1 Controls and Latin-1 Supplement
Ceci constitue la partie haute de ISO-8859-1. Les caractères sont en fait dans l'intervalle U+00A0..U+00FF tandis que U+0080..U+009F sont les commandes C1.
U+0100 .. U+017F
Ž
[fr] Latin étendu A
[en] Latin Extended-A
On y trouve quelques caractères oubliés dans ISO-8859-1 tels que les ligatures Œ et œ et le Ÿ(tous trois présents dans ISO-8859-15). Les tables CP850 et MacRoman comprennent aussi le ı qui est un i sans point.
U+0180 .. U+024F
ƒ
[fr] Latin étendu B
[en] Latin Extended-B
Le caractère ƒ est le seul représentant de ce bloc dans les tables choisies : il est dans CP437, CP850, CP1252 et MacRoman.
U+02B0 .. U+02FF
ˆ
[fr] Lettres modificatives avec chasse
[en] Spacing Modifier Letters
On trouve deux de ces caractères dans CP1252, les deux mêmes plus six autres dans MacRoman.
U+0370 .. U+03FF
π
[fr] Grec et copte
[en] Greek and Coptic
Caractères présents dans CP437 et MacRoman.
U+2000 .. U+206F
[fr] Ponctuation générale
[en] General Punctuation
On y trouve en particulier la vraie apostrophe typographique (’) et les tirets (– et —) qui sont si mal rendus en ASCII par l'apostrophe droite (') et les traits d'union (--).
U+2070 .. U+209F
[fr] Exposants et indices
[en] Superscripts and Subscripts
Un seul représentant dans une seule table : ⁿ dans CP437.
U+20A0 .. U+20CF
[fr] Symboles monétaires
[en] Currency Symbols
On trouve ₧ dans CP437, € dans ISO-8859-15 mais aussi dans les versions récentes de CP1252 et MacRoman.
U+2100 .. U+214F
[fr] Symboles de type lettre
[en] Letterlike Symbols
Un seul représentant : ™ dans CP1252 et MacRoman.
U+2190 .. U+21FF
[fr] Flèches
[en] Arrows
On trouve sept de ces caractères dans une seule table : CP437.
U+2200 .. U+22FF
[fr] Opérateurs mathématiques
[en] Mathematical Operators
Caractères présents dans CP437 et MacRoman.
U+2300 .. U+23FF
[fr] Signes techniques divers
[en] Miscellaneous Technical
On trouve quatre de ces caractères dans une seule table : CP437.
U+2500 .. U+257F
[fr] Filets
[en] Box Drawing
Toutes les combinaisons de filets fins ou doubles sont dans CP437, seules celles qui ne mixent pas les deux types sont aussi dans CP850.
U+2580 .. U+259F
[fr] Pavés
[en] Block Elements
On trouve huit de ces caractères dans CP437, deux de moins dans CP850.
U+25A0 .. U+25FF
[fr] Formes géométriques
[en] Geometric Shapes
Le losange ◊ est dans MacRoman, le carré noir ■ dans CP850, et neuf caractères dont le carré noir (mais pas le losange) dans CP437.
U+2600 .. U+26FF
[fr] Symboles divers
[en] Miscellaneous Symbols
On trouve onze de ces caractères dans CP437, tous dans la première rangée de cette table.
U+E000 .. U+F8FF
[fr] Zone à usage privé
[en] Private Use Area
Comme son nom l'indique, cette zone ne contient aucun caractère défini publiquement par le consortium Unicode. Chaque vendeur de matériel ou de logiciel peut la définir à sa guise. Par exemple, à la position U+F8FF, les polices de caractère sur Macintosh affichent le logo Apple.
U+FB00 .. U+FB4F
[fr] Formes de présentation alphabétiques
[en] Alphabetic Presentation Forms
On trouve les ligatures fi et fl dans MacRoman.

3. Informations sur les caractères

Plusieurs caractéristiques sont attachées à chaque caractère. L'une d'entre elles est sa position dans la table 8 bits choisie, mais les autres ne dépendent que de sa position dans Unicode. Pour les décrire, je prendrai pour exemple le caractère € que l'on trouve à la position A4 (164 en décimal) dans ISO-8859-15. Si votre navigateur est configuré pour afficher des « info-bulles », en survolant ce caractère avec la souris vous devriez voir quelque chose qui ressemble à ça : (164) U+20AC &#8364; &euro; [E2 82 AC]

Position dans la table 8 bits

C'est un nombre compris entre 0 et 255 en décimal (entre 00 et FF en hexadécimal), qui tient donc dans un octet, et qui représente de façon unique un caractère au sein d'une table 8 bits donnée.

Ainsi, le caractère € est à la position A4 (hexa) dans ISO-8859-15. Comme A4 = A0 + 04, on le trouve à l'intersection de la ligne A0 et de la colonne 04 (ou de la colonne A0 et de la ligne 04 si vous avez choisi une orientation verticale pour les rangées de caractères). Pour avoir la position en décimal, à moins d'être un crack en conversions de bases et de savoir tout calculer de tête (ainsi A4 = 10×16+4 = 164), on peut trouver l'information au tout début de l'info-bulle, entre parenthèses : (164). Si JavaScript est activé, on peut aussi lire la valeur dans l'un des tableaux de droite.

Position dans Unicode

Chaque caractère Unicode est repéré par un point de code de la forme U+nnnn, où nnnn est en hexadécimal. Les caractères qui nous intéressent font tous partie du premier plan de base multilingue et sont représentés par un point de code à quatre chiffres hexa, entre U+0000 et U+FFFD (entre 0 et 65533 en décimal). D'autres valeurs sont possibles, de U+10000 à U+10FFFF, mais pas pour les caractères que l'on rencontre habituellement.

Concernant notre exemple du caractère €, le point de code est U+20AC (deuxième valeur dans l'info-bulle). Noter que le nombre hexadécimal 20AC vaut 8364 en décimal, ce qui servira pour les références de caractères numériques en HTML.

Références de caractères numériques

Les références de caractères en HTML permettent d'inclure dans une page web n'importe quel caractère, quel que soit le jeu de caractères déclaré pour la page. Ainsi, cette page que vous lisez est en ISO-8859-1, et pourtant elle contient des dizaines de caractères qui n'en font pas partie.

Les références de caractères les plus universelles sont celles utilisant un numéro Unicode, soit en hexadécimal (précédé de « &#x » et suivi de « ; »), soit en décimal (précédé de « &# » et suivi de « ; »). Le numéro hexadécimal est le plus facile à trouver dans une table Unicode puisqu'il suffit de garder les quatre chiffres hexa en supprimant le « U+ ». Cela dit, l'habitude a été prise par les auteurs de sites d'utiliser plutôt la forme avec numéro décimal, car les plus anciens navigateurs ne comprenaient que celle-ci.

Reprenons notre exemple du caractère €. La référence numérique hexadécimale, calquée sur U+20AC, est « &#x20AC; ». Quant à la référence numérique décimale, on la trouve directement dans l'info-bulle : &#8364;,

Références de caractères symboliques (entités)

Il existe un autre type de références de caractères sous la forme de noms (précédés par « & » et suivis par « ; ») qui sont plus faciles à mémoriser que les références numériques. On les appelle Character entity references en anglais, références des entités de caractères en français. Elles présentent pourtant deux inconvénients majeurs, l'un étant que seuls quelques caractères ont une référence symbolique, l'autre étant que la liste de caractères reconnue pour HTML4 ne le sera plus en XHTML.

Lorsque une entité existe pour un caractère, son nom est donné en quatrième et avant-dernière position dans l'info-bulle. Ainsi, pour le caractère €, c'est &euro;.

Codage UTF-8

Le codage UTF-8 d'un caractère donné ne dépend que de sa position dans Unicode (son point de code U+nnnn). Il est donné à la dernière position de l'info-bulle, entre crochets.

Pour le caractère €, c'est [E2 82 AC].

4. Comparaisons entre plusieurs tables

J'en viens à la principale raison d'être de cette page rassemblant plusieurs tables de caractères : les comparer.

En effet, elle permet de répondre à des questions existentielles telles que « pourquoi mon é devient un Ú quand je lance mon application Windows sous une fenêtre DOS ? » (réponse : parce que le é est à la position 233 dans CP1252, jeu de caractères pour Windows, et que le Ú est à la même position 233 dans CP850, jeu de caractères pour MS-DOS) ou bien « quel caractère dois-je saisir dans mon éditeur CP1252 pour qu'il soit lu comme un , sachant que le jeu indiqué au destinataire est ISO-8859-15 ? » (réponse : c'est le caractère ¤, qui se trouve à la position 164 dans CP1252, position de dans ISO-8859-15).

À la même position dans toutes les tables

Ce tableau rassemble l'ensemble des caractères se trouvant à la même position dans chacune des tables 8 bits.

Par exemple, à la position 164 qui correspond au caractère € dans la table ISO-8859-15, on trouve le caractère ¤ dans les tables ISO-8859-1 et CP1252, le caractère ñ dans les tables CP850 et CP437, le caractère § dans la table MacRoman, et rien du tout dans la table ASCII.

Pour chacun de ces caractères on trouvera rassemblés dans le même tableau le point de code Unicode, les références de caractères pour HTML (référence numérique, et entité si elle existe), et le codage UTF-8.

Le même glyphe dans toutes les tables

Lorsqu'un caractère donné se retrouve dans plusieurs tables 8 bits, ce tableau indique sa position dans chacune.

Par exemple, le caractère € se trouve à la position 164 (A4 hexa) dans ISO-8859-15, à la position 128 (80 hexa) dans CP1252, à la position 219 (DB hexa) dans MacRoman – du moins depuis MacOS 8.5 –, et nulle part ailleurs.

5. Utilisation pratique

J'ai essayé de concevoir cette page de façon à ce que son utilisation soit aussi intuitive que possible. Néanmoins voici quelques indications sur les différentes possibilités qui sont offertes.

Changer les valeurs par défaut

Certains choix par défaut de la page sont modifiables grâce à un formulaire. En particulier on peut changer l'orientation des rangées, soit horizontale, soit verticale. Une orientation horizontale correspond à la lecture habituelle de gauche à droite puis de haut en bas, mais on voit assez souvent des tables de caractères présentées verticalement et il est possible que cette orientation vous semble plus naturelle. En tout cas, ceci est juste un choix esthétique qui n'a strictement aucune incidence sur les informations présentées.

Comme autre choix possible, il y a celui de la table formant le 6e onglet. Initialement j'avais choisi la table CP437 car c'est celle que moi, dinosaure de l'informatique, je connaissais et j'utilisais dès la fin des années 1980. Mais cette table n'est plus jamais utilisée, tandis que les possesseurs de Mac seront heureux de trouver la table MacRoman. Du coup, en février 2007 j'ai remplacé la table CP437 par la table MacRoman, mais en laissant la possibilité à ceux qui le souhaitent (des nostalgiques, sûrement) de revenir à CP437.

Enfin, on peut choisir un onglet de référence (c'est-à-dire une table) et une position de référence (c'est-à-dire un caractère dans cette table), ce qui remplit déjà les tableaux de droite donnant des informations sur ce caractère et sur ceux qui lui sont apparentés dans les autres tables. Le choix de la table de référence se fait par un menu, mais pour la position de référence il faut saisir sa valeur directement en décimal : c'est un entier compris entre 0 et 255.

Important : n'oubliez pas de cliquer sur le bouton « Appliquer » pour valider vos choix.

Naviguer à la souris

Vous pouvez passer d'une table à une autre en survolant les différents onglets à la souris, puis passer de la même manière d'un caractère à un autre. Vous pourrez ainsi afficher des informations sur chaque caractère, soit via les « info-bulles » si votre navigateur est configuré pour les afficher, soit dans les tableaux de droite si JavaScript est actif.

En cessant de survoler un caractère ou une table, ce sont la table et le caractère de référence qui reviennent automatiquement. Mais si JavaScript est actif vous pouvez changer de table de référence et de caractère de référence, tout simplement en cliquant dessus.

6. Historique de cette page

Juillet 2005

Le jeudi 21 juillet 2005, désireux de faire un comparatif pratique entre plusieurs tables de caractères, je commence à faire quelques tests en local pour arriver à les mettre les unes sur les autres, ceci en jouant en CSS avec la pseudo-classe « :hover » et la propriété « z-index ».

Le dimanche 24 juillet je mets en ligne un premier prototype fonctionnel mais très peu ergonomique, et je lance une discussion sur le forum usenet fr.comp.infosystemes.www.auteurs afin de l'améliorer. Recevant de nombreuses réponses de plus d'une dizaine de contributeurs réguliers de ce groupe, dont plusieurs utilisant d'autres navigateurs que les miens et d'autres systèmes d'exploitation que le mien, j'arrive grâce à eux à un résultat beaucoup plus satisfaisant, le vendredi 29 juillet.

Février et mars 2007

Le samedi 24 février 2007, j'ajoute la possibilité d'afficher la table MacRoman en lieu et place de la table CP437. Gérer MacRoman était une chose que l'on m'avait demandée très longtemps auparavant, mais que je n'avais jamais réalisée car je n'avais pas envie d'augmenter le nombre d'onglets, et que je n'avais pas pensé à un paramètre d'appel pour choisir entre MacRoman et CP437.

Quelques jours plus tard, le jeudi 1er mars, j'explique enfin le code des couleurs que j'avais utilisé dès le début pour regrouper les caractères apparentés.

Avril 2007

Le dimanche 15 avril je termine deux semaines de modifications. Les plus visibles sont le formulaire permettant de choisir soi-même les valeurs par défaut, les tableaux de droite que j'ai réduits pour les rendre plus lisibles, et la doc que j'ai mise à jour.

Mais j'ai aussi et surtout changé le code JavaScript. Avec l'ancien code, le temps de lancement était d'environ 700 ou 800 ms dans Mozilla et Firefox, mais de plusieurs secondes dans Internet Explorer, ce temps augmentant à chaque appel. Avec le code actuel, le temps est le même dans Internet Explorer que dans Mozilla et Firefox.

Décembre 2007

Je viens d'ajouter deux lignes de JavaScript pour mettre à jour automatiquement, juste en cliquant sur un caractère ou un onglet, l'onglet de référence et la position de référence dans le formulaire permettant de changer les valeurs par défaut.