Le guide définitif de codage de caractères Web - SitePoint

Nous allons examiner les détails dans une minute, mais pour l'instant, disons simplement qu'un codage de caractères est la façon dont les lettres, des chiffres et d'autres symboles sont exprimés sous forme de valeurs numériques qu'un ordinateur peut comprendre.

Quelle est la différence?

Pourquoi importe quelle forme de codage que nous choisissons? Qu'advient-il si nous choisissons une « mauvaise »?

Quel guide le choix?

devrait prendre un certain nombre de paramètres en considération avant de choisir une forme de codage, y compris:

  • Quels sont les personnages que je vais utiliser?
  • Où encodages mon éditeur peut enregistrer des fichiers?
  • Ce qui encodages sont pris en charge par les différentes composantes de ma chaîne d'édition?
  • Ce qui encodages sont pris en charge par les navigateurs des visiteurs?

Considérons chacune de ces questions à son tour.

Certains auteurs préfèrent utiliser des éditeurs de texte comme Bloc-notes ou réguliers Vim; d'autres comme un point et cliquez sur l'outil WYSIWYG comme Dreamweaver; certains utilisent un système de gestion de contenu sophistiqué (CMS). Quelle que soit la préférence personnelle, notre choix des éditeurs affecte notre choix de codage. Certains éditeurs ne peuvent enregistrer dans un encodage, et ils ne seront même pas vous dire lequel. D'autres peuvent sauver des dizaines de codages différents, mais vous avez besoin de savoir qui répondra à vos besoins.

Une chaîne d'édition comprend plus d'un éditeur. Il y a toujours un serveur Web (serveur HTTP) à l'extrémité de la chaîne, mais il peut y avoir d'autres composants entre: bases de données, langages de programmation ou les scripts, les cadres, les serveurs d'applications, les moteurs de servlets et plus encore.

Il est impossible d'énumérer les capacités de tous les différents éditeurs, bases de données, et ainsi de suite dans cet article, car il y a tout simplement trop nombreux d'entre eux. Vous devez consulter la documentation de vos composants avant de choisir l'encodage à utiliser.

Qu'est-ce qu'un codage de caractères?

Un personnage est la plus petite unité d'écriture qui est capable de transmettre de l'information. Il est un concept abstrait: un personnage ne possède pas d'aspect visuel. « Majuscules latine A » est un caractère différent de « minuscule latin » et de « cyrillique majuscule » et « majuscule grecque Alpha ».

L'ensemble des caractères disponibles est appelé un répertoire de caractères. L'emplacement (index) d'un caractère donné au sein d'un répertoire est connu comme sa position de code, ou un point de code.

Le procédé de représentation numériquement un point de code dans un répertoire donné est appelé le codage de caractères. Malheureusement, le terme « jeu de caractères », ou « charset », a été utilisé à la fois pour et encodages répertoires, il est donc préférable d'éviter complètement.

Les premiers ordinateurs ne disposaient pas d'un codage de caractères standardisé, mais cela n'a pas beaucoup, parce que les ordinateurs pouvaient rarement communiquer entre eux à l'époque. Lorsque la communication entre l'ordinateur est devenu possible, la nécessité de normes de codage est devenu évident. Un répertoire commun début / encodage était EBCDIC, un autre était le Code standard américain pour l'échange d'information, ASCII a.k.a.. La version américaine, US-ASCII, a été normalisé ISO 646.

La série ISO 8859 est une tentative de fournir des solutions de rechange pour les langues autres que l'anglais. Il est de l'ASCII, à savoir les 128 premiers points de code sont les mêmes en ASCII et toutes les versions de la norme ISO 8859. Mais ISO 8859 utilise huit bits et peut donc représenter 256 caractères (0-255). Il est donc parfois, à tort, appelé « ASCII 8 bits ». La gamme 128-159 (0x80 à 0x9F) est réservé pour les caractères de contrôle C1.

La version la plus courante pour les langues occidentales ISO 8859-1, ISO Latin-a.k.a. 1. Il contient un certain nombre de versions de voyelles accentuées, ainsi que divers caractères spéciaux. Il a été remplacé par l'ISO 8859-15, pour accueillir le signe euro (€, -Euro;).

Microsoft, jamais connu pour suivre la norme de quelqu'un d'autre quand il peut créer son propre, a également créé un certain nombre de caractères / encodages répertoires. Ceux-ci ont été appelés « pages de code » dans DOS et CP850 est la page de code utilisé pour les langues occidentales.

Pour les langues qui n'utilisent pas les lettres latines, / encodages spécialisés répertoires similaires ont été mis au point. Le problème était qu'il n'y avait pas répertoire / encodage qui pourrait être utilisé pour les combinaisons de ces langues.

La solution à ce problème est appelé Unicode - un répertoire de caractères qui contient la plupart des caractères utilisés dans les langues du monde. Il peut accueillir des millions de caractères, et contient déjà des centaines de milliers. Unicode est divisé en « plans » de 64K caractères. La seule utilisée dans la plupart des cas est le premier plan, appelé plan multilingue de base, ou BMP.

Une version d'Unicode qui a été normalisé par l'ISO est appelée ISO 10646 (le numéro est pas un hasard, comparer à la norme ISO 646 de US-ASCII). Il existe des différences mineures entre Unicode et ISO 10646, mais rien que nous, simples mortels à vous en préoccuper.

ISO 10646 est important, car il est le répertoire de caractères qui est utilisé par HTML.

Quel codage devrais-je choisir?

Malheureusement, cependant, quelques problèmes mineurs liés à l'utilisation UTF-8 - même en ce jour et l'âge.

Le premier problème avec l'utilisation UTF-8 est que tous les éditeurs ou les outils d'édition prennent en charge. Vous penseriez que tous les logiciels soutiendrait UTF-8 après toutes ces années, mais malheureusement, ce n'est pas.

Un problème mineur est que certains navigateurs anciens ne prennent pas en charge UTF-8 (même sans la nomenclature). Cependant, ceux-ci devraient être peu nombreux ces jours-ci.

validateur HTML du W3C attrapera ces types de caractères non valides et de les signaler comme des erreurs.

Problèmes avec d'autres codages

UTF-8 et la série ISO 8859 sont bien pris en charge par les navigateurs modernes. La plupart des navigateurs prennent en charge également quelques autres encodages, mais si vous choisissez un encodage exotique, vous courez le risque que certains visiteurs ne seront pas en mesure de lire votre contenu.

Spécification du codage

Une fois que vous avez choisi l'encodage que vous utiliserez, vous devez vous assurer que la bonne information est transmise aux navigateurs, moteurs de recherche, et ainsi de suite.

Les pages Web sont servis en utilisant le protocole HTTP (HyperText Transfer): un navigateur envoie une requête via HTTP et le serveur renvoie une réponse via HTTP. La réponse est constituée de deux parties: les en-têtes et le corps, séparés par une ligne vide. Les en-têtes fournissent des informations sur le corps (contenu). Le corps contient la ressource demandée (généralement un document HTML).

Pour HTML, les informations de codage doivent être envoyées par le serveur Web en utilisant l'en-tête Content-Type:

Notez toutefois que l'en-tête HTTP réel remplace un élément META, il est donc impératif que vous configurez correctement le serveur Web. Pour Apache, vous pouvez le faire en éditant le fichier de configuration (/etc/httpd.conf sur la plupart des systèmes * nix). La directive devrait ressembler à ceci:

Pour Microsoft IIS, ce paramètre doit être situé dans ses nombreuses boîtes de dialogue.

Malheureusement, le choix d'un encodage est pas toujours facile. Le manque de soutien dans les différentes composantes de la chaîne d'édition peut vous empêcher d'utiliser l'encodage qui convient le mieux à votre contenu.

Articles Liés