Outils pour utilisateurs

Outils du site


Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
900-codage:040_html [le 13/02/2025 à 14:40] – supprimée - modification externe (Date inconnue) 127.0.0.1900-codage:040_html [le 13/02/2025 à 14:40] (Version actuelle) – ↷ Page déplacée de 030codage:040_html à 900-codage:040_html prof
Ligne 1: Ligne 1:
 +====== Dans le HTML ======
 +==== Les pieds dans la toile ====
 +
 +Bien que pour HTTP, protocole apte à transmettre des flux d'octets sans considérer que ce sont forcément des caractères, bon nombre de problèmes sont à résoudre.
 +
 +Le langage HTML (Hyper Text Markup Language), lui aussi, propose des méthodes particulières pour traiter les caractères non US-ASCII. Il règne d'ailleurs dans ce domaine la plus grande confusion.
 +
 +Avec la version 3.2 du HTML, il n'y avait normalement pas d'autre possibilité que de passer par un transcodage du type « signes nommés ». Depuis le version 4.0 de HTML, il est théoriquement possible de définir dans l'en-tête du document quel jeu de caractères est utilisé.
 +
 +Comme HTML est probablement le lieu où les normes sont le moins respectées, il convient tout de même de rester prudent. Car, croyez-vous que le fait de pouvoir utiliser UTF-8, ISO-8859-1, ISO-8859-15 ou autre, simplement en annonçant la chose dans l'en-tête HTML ?
 +
 +Voyons ceci...
 +
 +Dans la page que nous avons sous les yeux, il est écrit  :
 +<html><pre class="code">
 +&lt;head&gt;
 +<span class="hly">   &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;</span>
 +   ...
 +&lt;/head&gt;
 +</pre></html>
 +En voyant ceci, notre « browser » va comprendre qu'il faut utiliser UTF-8 et, normalement, il n'y a pas de problème, à la condition bien entendu que le texte qui a été introduit dans ce wiki soit bien encodé en UTF-8.
 +
 +Mais en cas de désaccord entre la saisie et l'affichage, la phrase :
 +  Nous avons été abusés par le système
 +Pourrait devenir ceci :
 +  Nous avons été abusés par le système
 +Nettement moins lisible n'est-ce pas ? Dans cet exemple, le texte a été encodé en UTF-8 et décodé en ISO-8859-1. Il s'agit bien sûr d'une manipulation pour faire apparaitre ceci. Mais forcez donc votre navigateur à afficher cette page en ISO-8859-1...
 +
 +Normalement, avec des choses comme les WIKI, le problème ne se rencontre pas, sauf dans certains cas tordus...
 +
 +Si nous utilisons les « signes nommés », nous pouvons garantir plus d'interopérabilité, au prix d'un code source HTML nettement moins lisible.
 +
 +=== Les signes nommés ===
 +
 +Le principe est simple :
 +
 +  * Un caractère d'échappement : Le **&**,
 +  * un nom pour le caractère non US-ASCII
 +  * un délimiteur de fin de codage : le **;**
 +
 +Un simple exemple, juste pour illustrer. Le **é** devrait se coder dans le source HTML : **&;eacute;**
 +
 +Vous trouverez beaucoup plus de détails sur les signes nommés ainsi que sur beaucoup d'autres points du HTML sur la très instructive page [[https://www-sop.inria.fr/members/Sylvain.Chevillard/fr.selfhtml.org/html/reference/signes.htm/|SELFHTML]].
 +
 +Il existe une table de signes nommés définie dans HTML 3.2 . HTML 4.0 définit des ajouts à cette table, bien que, théoriquement, une balise d'en-tête du type :
 +
 +  <meta http-equiv= "Content-Type" content= "text/html; charset=iso-8859-1">
 +
 +devrait à elle seule permettre l'emploi de tous les symboles définis par iso-8859-1 (version 4.0 et suivantes).
 +
 +
 +
 +===== Conclusions =====
 +
 +Si vous n'avez pas encore attrapé le vertige, vous ne l'attraperez plus. Sinon, essayons de consolider un peu nos positions.
 +
 +==== Les faits ====
 +
 +  * Les systèmes numériques ne savent traiter que des informations binaires, donc numériques.
 +  * Les protocoles applicatifs, le plus souvent, ont besoin de transporter du texte.
 +  * Le texte est destiné à être lu, donc écrit, et  n'est pas constitué d'une collection de valeurs numériques, mais d'une collection de symboles graphiques : Un alphabet
 +  * Il n'y a pas qu'un seul alphabet au monde.
 +  * Les protocoles applicatifs peuvent avoir aussi à échanger des données qui ne sont pas du texte (une image, du son, une vidéo...).
 +
 +==== Les solutions ====
 +
 +  * Coder sur 7 bits un jeu de caractères minimal (US-ASCII), mais il n'y a pas que l'américain dans le monde, et 128 valeurs ne suffisent pas pour des langues riches en lettres accentuées.
 +  * Coder sur 8 bits, mais ça ne suffit pas non plus pour toutes les langues possibles.
 +  * Coder en UTF-8.
 +
 +==== Le bricolage ====
 +
 +Le « bricolage » le plus propre consiste à utiliser un jeu de caractères minimal et de coder les caractères supplémentaires par une combinaison identifiable des caractères de base. C'est cette solution qui est le plus souvent mise en œuvre, et elle donne finalement les meilleurs résultats.
 +
 +  * Codage « quoted-printable » (e-mails, imprimantes...)
 +  * Codage « Base64 » (e-mails, fichiers pouvant contenir autre chose que du texte pur...)
 +  * Signes nommés (HTML), encore appelés « html entities » définis de façon officielle sur [[http://www.w3.org/MarkUp/Guide/Advanced.html|le site du W3C]].
  
Dans le HTML: Dernière modification le: 01/01/1970 à 00:00 par