Des caractères typographiques baroques peuvent parfois se glisser dans certains textes de pages web : les lettres accentuées y sont, par exemple, remplacées par des carrés, des points d'interrogation ou des suites de caractères comme é (pour é) , è (pour è) , ê (pour ê) ou à (pour à).
Cette situation peut se produire quand le navigateur utilise un jeu de caractères codés différent de celui qui a été utilisé pour enregistrer le document HTML original.
Afin de s'assurer que le navigateur utilise le jeu de caractères adéquat pour interpréter la page, les webmestres ont avantage à déclarer explicitement l'encodage de caractères utilisé pour la créer.
Pour afficher correctement le texte d'une page web, le navigateur doit savoir à quel jeu de caractères se référer. L'encodage de caractères utilisé pour réaliser le document peut être spécifié, au niveau serveur, par un en-tête HTTP (HyperText Transfer Protocol) et, dans le document lui-même, par une balise HTML (élément meta).
Le serveur peut fournir au navigateur l'information concernant l'encodage de caractères du document en utilisant le paramètre charset (character set) dans le champs de l'en-tête Content-Type du protocole de communication HTTP.
Par exemple, on déclarera dans l'en-tête HTTP :
Content-Type: text/html; charset=utf-8
Cet en-tête HTTP indique au navigateur que le document a été créé en utilisant le jeu de caractères codés international UTF-8 (Universal Character Set Transformation Format - 8 bits), qui couvre presque tous les caractères, signes de ponctuation et symboles des différents systèmes d'écriture.
Les en-têtes HTTP peuvent être modifiés par une action sur la configuration globale ou locale du serveur web, ou par un langage de script côté serveur. (Pour plus de détails : Voir et modifier les en-têtes HTTP .)
Si le serveur ne peut envoyer de paramètre charset ou si on souhaite faciliter la consultation des pages en local, l'élément meta peut être utilisé à l'intérieur du document HTML pour fournir au navigateur l'information sur l'encodage de caractères de la page. C'est cependant l'information fournie par le serveur qui sera prioritaire et qui, si elle existe, devra donc être juste; la balise meta devra reprendre cette même information.
Par exemple, on déclarera en début d'en-tête du fichier HTML (entre <head> et </head>) :
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> (en HTML4)
ou
<meta charset="iso-8859-1"> (en HTML5)
Cette balise indique au navigateur que le document a été créé avec le jeu de caractères codés local ISO-8859-1, aussi appelé Latin-1 ou Europe occidentale, destiné à encoder des documents dans le système d'écriture de plusieurs langues parlées en Europe de l'Ouest, mais aussi en Amérique du Nord, en Amérique latine, en Afrique, en Océanie et dans certains pays d'Asie du Sud-Est.
Aux débuts du web, ASCII était considéré comme l'encodage de caractères par défaut; ISO-8859-1 est ensuite devenu la norme pour les versions HTML 2.0 à HTML 4.01, puis UTF-8 pour HTML5.
Dans certains cas (caractères réservés ou symboles inexistants sur le clavier, par exemple), il peut être impossible d'entrer directement un caractère typographique dans le document HTML : des entités de caractères SGML (Standard Generalized Markup Language), numériques ou alphabétiques, pourront alors être utilisées afin de rendre l'affichage du caractère correctement, à condition bien entendu que ledit caractère soit présent dans la police spécifiée.
Les entités de caractères numériques (sous forme décimale ou hexadécimale) correspondent au point de code du caractère dans le répertoire Unicode. Elles sont composées d'un nombre précédé du caractère croisillon ou carré #, placé entre l'esperluette & et le point-virgule ; (en hexadécimal, un x est ajouté devant le nombre). Par exemple, pour le signe © (copyright) : © en notation décimale (où 169 est la référence au point de code Unicode du caractère en notation décimale) et © en notation hexadécimale (où 00A9 est la référence au point de code Unicode du caractère en notation hexadécimale). Les entités numériques hexadécimales sont insensibles à la casse.
Plus conviviales et intuitives que les codes numériques, les entités alphabétiques ou entités de caractères HTML utilisent des noms symboliques placés entre l'esperluette & et le point-virgule ;. Par exemple, pour le signe © (copyright) : © . Les entités HTML sont sensibles à la casse.
Il est préférable d'utiliser un encodage qui permet d'entrer les caractères dans leur forme réelle plutôt que de les remplacer par des entités de caractères. L'utilisation abusive des entités peut en effet rendre difficile la compréhension et le travail au niveau du code source, et peut également augmenter de façon significative la taille du fichier. Si quelques caractères seulement d'un système d'écriture étranger à l'encodage déclaré doivent être insérés dans le texte, l'utilisation d'entités de caractères peut cependant se justifier. Les caractères réservés HTML sont un cas à part et ils doivent obligatoirement être écrits avec des entités de caractères.
(Les tableaux qui suivent ne sont pas exhaustifs. Ils donnent les correspondances d'entités numériques décimales et d'entités HTML pour certains caractères plus ou moins utilisés et pour des spécificités de la langue française.)
caractère | entité numérique décimale | entité html |
& | & | & |
< | < | < |
> | > | > |
Note : Certains caractères réguliers sont utilisés pour coder en (X)HTML. Bien que présents dans le code source de la page, ils ne sont donc pas affichés par le navigateur. Pour que ces caractères ne soient pas interprétés comme du balisage (< ou > qui délimitent les balises) ou comme le début d'une référence de caractère (&) et qu'ils apparaissent dans le contenu affiché à l'écran, ils doivent être écrits à l'aide de leur entité respective. |
caractère | entité numérique décimale | entité html |
Œ | Œ | Œ |
œ | œ | œ |
Æ | Æ | Æ |
æ | æ | æ |
Note : Considérées comme un seul caractère, les ligatures linguistiques sont obligatoires en français. Elles concernent œ (e dans l'o, comme dans œil ou bœuf) et æ (e dans l'a, comme dans ex æquo ou cæcum). |
caractère | entité numérique décimale | entité html |
& | & | & |
# | # | |
♯ | ♯ | ♯ |
§ | § | § |
¶ | ¶ | ¶ |
† | † | † |
‡ | ‡ | ‡ |
© | © | © |
® | ® | ® |
™ | ™ | ™ |
caractère | entité numérique décimale | entité html |
€ | € | € |
$ | $ | |
¢ | ¢ | ¢ |
£ | £ | £ |
¥ | ¥ | ¥ |
ƒ | ƒ | ƒ |
¤ | ¤ | ¤ |
caractère | entité numérique décimale | entité html |
< | < | < |
> | > | > |
≤ | ≤ | ≤ |
≥ | ≥ | ≥ |
= | = | |
≃ | ≃ | |
≈ | ≈ | ≈ |
≠ | ≠ | ≠ |
≡ | ≡ | ≡ |
+ | + | |
- | − | − |
± | ± | ± |
÷ | ÷ | ÷ |
× | × | × |
· | · | · |
⁄ | ⁄ | ⁄ |
% | % | |
‰ | ‰ | ‰ |
¼ | ¼ | ¼ |
½ | ½ | ½ |
¾ | ¾ | ¾ |
¹ | ¹ | ¹ |
² | ² | ² |
³ | ³ | ³ |
º | º | º |
ª | ª | ª |
ƒ | ƒ | ƒ |
′ | ′ | ′ |
″ | ″ | ″ |
∂ | ∂ | ∂ |
∏ | ∏ | ∏ |
∑ | ∑ | ∑ |
√ | √ | √ |
∞ | ∞ | ∞ |
¬ | ¬ | ¬ |
∩ | ∩ | ∩ |
∫ | ∫ | ∫ |
µ | µ | µ |
° | ° | ° |
caractère | entité numérique décimale | entité html |
" | " | " |
‘ | ‘ | ‘ |
’ | ’ | ’ |
‚ | ‚ | &rbquo; |
“ | “ | “ |
” | ” | ” |
„ | „ | „ |
‹ | ‹ | ‹ |
› | › | › |
« | « | « |
» | » | » |
¦ | ¦ | ¦ |
– | – | – |
— | — | — |
… | … | … |
¡ | ¡ | ¡ |
¿ | ¿ | ¿ |
~ | ~ |
caractère | entité numérique décimale | entité html |
À | À | À |
Á | Á | Á |
 |  |  |
à | à | à |
Ä | Ä | Ä |
Å | Å | Å |
Ç | Ç | Ç |
È | È | È |
É | É | É |
Ê | Ê | Ê |
Ë | Ë | Ë |
Ì | Ì | Ì |
Í | Í | Í |
Î | Î | Î |
Ï | Ï | Ï |
Ñ | Ñ | Ñ |
Ò | Ò | Ò |
Ó | Ó | Ó |
Ô | Ô | Ô |
Õ | Õ | Õ |
Ö | Ö | Ö |
Ø | Ø | Ø |
Š | Š | Š |
Ù | Ù | Ù |
Ú | Ú | Ú |
Û | Û | Û |
Ü | Ü | Ü |
Ý | Ý | Ý |
Ÿ | Ÿ | Ÿ |
Ž | Ž | |
à | à | à |
á | á | á |
â | â | â |
ã | ã | ã |
ä | ä | ä |
å | å | å |
ç | ç | ç |
è | è | è |
é | é | é |
ê | ê | ê |
ë | ë | ë |
ì | ì | ì |
í | í | í |
î | î | î |
ï | ï | ï |
ñ | ñ | ñ |
ò | ò | ò |
ó | ó | ó |
ô | ô | ô |
õ | õ | õ |
ö | ö | ö |
ø | ø | ø |
š | š | š |
ù | ù | ù |
ú | ú | ú |
û | û | û |
ü | ü | ü |
ý | ý | ý |
ÿ | ÿ | ÿ |
ž | ž | |
Note : Si le jeu de caractères a été correctement déclaré (ISO-8859-1 ou UTF-8), il est inutile de coder les caractères accentués en entités de caractères, sauf dans le cas où il n'est pas possible de les entrer directement au clavier, par copier-coller ou autrement. |
Note : À moins d'indication contraire, les liens présents ci-dessous sont des liens externes, c'est-à-dire des liens qui pointent vers des ressources extérieures au site actuel et qui ouvriront donc des sites autres que maboite.qc.ca.
Explications pour bien comprendre les problèmes d'encodage, distinction entre l'encodage réel du document et l'encodage déclaré.
Avantages et inconvénients, évolution des tendances.
Qu’est-ce qu’un jeu de caractères? Quelle est la différence entre ISO-8859-1, UTF-8 et Windows-1252? Steve Frécinaux présente les différents jeux de caractères.
Noms officiels des jeux de caractères qui peuvent être utilisés sur internet.
Site officiel du Unicode Consortium (Consortium Unicode), organisation privée sans but lucratif qui coordonne le développement du standard Unicode.
Article sur le standard informatique Unicode, développé par le Consortium Unicode, qui permet des échanges de textes dans différentes langues, à un niveau mondial.
Tous les symboles Unicode avec noms et descriptions sur une seule page.
Traduction des recommandations du W3C concernant la représentation du document HTML.
Documentation officielle du W3C concernant la représentation du document HTML, en anglais.
Documentation officielle du W3C concernant le paramètre HTTP charset, en français.
Les en-têtes HTTP (HTTP Headers), quels sont les incontournables et comment on peut les modifier.
Définition, utilité, liste des entités et applications.
Comment et quand utiliser les entités de caractères.
Les entités de caractères dans HTML 4.
Les caractères codés de 128 à 159, propres à Windows, mais invalides selon les spécifications HTML 4+ et XHTML, ainsi que leurs codes de substitution valides.
Les problèmes causés par certains caractères spéciaux qui appartiennent au jeu de caractères MS Windows mais pas à ISO Latin-1 (Tampere University of Technology).