Caractères intéressants et entités
Sommaire
- Blancs et assimilés |
- Quelques autres codes intéressants |
- Entités et Character references |
- Entités prédéfinies |
- Typographie rudimentaire |
Blancs et assimilés
Certains types de fichiers doivent commencer par une séquence précise de caractères. Deux exemples de débuts conformes :
- Fichier HTML
- <!DOCTYPE …
- Fichier XML
- <?xml …
Dans le cas où le fichier ne commence pas comme attendu, le programme qui le lit peut chercher plus loin si les premiers caractères qu’il trouve sont des « espaces » ou « blancs » ou assimilés. Une tabulation, qui représente un saut de plusieurs caractères, sera acceptée, de même qu’un saut de ligne. Voici une liste de ces caractères ASCII très utiles. Les désignations rappelleront des souvenirs à ceux qui ont appris le clavier sur une vraie machine à écrire1.
Désignation | Symb | Code ASCII | |
Tabulation | HT | 9 | x9 |
Saut de ligne | LF | 10 | xA |
Saut de page | FF | 12 | xC |
Retour chariot | CR | 13 | xD |
Espace | SP | 32 | x20 |
Il est généralement possible d’ajouter dans un fichier texte des commentaires, i.e. des informations à l’intention du programmeur ou des utilisateurs. Le programme informatique qui analyse le fichier texte ignorera ces données.
A l’intérieur d’un fichier, les caractères espace ne sont pas toujours traîtés de la même façon. Dans la partie des données à afficher d’un fichier HTML, une suite de plusieurs blancs sera assimilée à un seul. Dans d’autres types de fichiers, ils seront tous reproduits.
Il est aussi utile de savoir que tous les systèmes d’exploitation ne terminent pas les lignes de la même façon. Le saut de ligne se fera :
- sur MacOS, par un CR
- sous MsWindows, par CR+LF
- sous Unix/GnuLinux, par un LF
Ainsi donc, sous Windows et si on utilise un éditeur un peu trop rudimentaire, on verra certains fichiers ne jamais (ou pas aussi souvent qu’on voudrait) revenir à la ligne quand on les affiche ; par exemple avec des sources de pages Web, souvent émises depuis un système Unix.
Et en EBCDIC ? Chez IBM, une suite d’espaces se reconnaît à la typique chaîne hexadécimale 4040404040… contre 2020202020… chez les autres. Un saut de ligne est marqué par le caractères 0x15 ou NEL (new line). Ajoutons-y CR et LF dans un programme CL sur IBM iSeries (AS/400) :
DCL &CR *CHAR 1 VALUE(X'0D') DCL &LF *CHAR 1 VALUE(X'25') DCL &NEL *CHAR 1 VALUE(X'15')
On remarquera qu’en EBCDIC LF a une valeur différente de l’ASCII
Quelques autres codes intéressants
Les termes utilisés seront explicités par la suite.
Désignation | Code ASCII | Signe | Exemples de fonctions (varie suivant le contexte) | |
Point d’exclamation | 33 | x21 | ! |
|
Numéro ("hash") | 35 | x23 | # | Avertissement : le hash n’est pas un « dièse » !
|
Tiret | 45 | x2D | - |
|
Point | 46 | x2E | . |
|
Barre oblique | 47 | x2F | / |
|
Deux-points | 58 | x3A | : |
|
Point d’interrogation | 63 | x3F | ? |
|
Arrobe | 64 | x40 | @ |
|
Crochet ouvert | 91 | x5B | [ |
|
Entités et Character references
Un programme qui attend du texte le reçoit par ce qu’il est convenu d’appeler « l’entrée standard » (ou stdin pour standard input). Pour alimenter ainsi l’ordinateur, plusieurs modalités sont possibles
- Au clavier (entrées frappées par l’utilisateur).
- Par le flux des caractères d’un fichier texte.
- Par la "redirection" du flux de données sorti d’un autre programme.
Remarque : le « flux » se dit stream en anglais. Ceci explique que dans certains contextes ou langages de programmation, les fichiers peuvent être nommés stream.
On a déjà vu que les caractères présents sur le clavier ne sont pas les seuls à pouvoir être transmis. Pour entrer un caractère exotique (par exemple Σ), on a vu le procédé [Alt] + [code] au clavier (cf supra "Entrée des codes au clavier"). Or un fichier texte est une alternative à la frappe humaine au clavier. On pourra utiliser des séquences de caractères spécifiques qui rempliront le même rôle que [Alt], pour indiquer au système qu’il va devoir interpréter spécifiquement ce qu’on lui envoie.
Les références caractères numériques ou NCR/numeric character references, sont un procédé permettant la représentation par une suite de caractères dans laquelle figure un code UCS (Universal Character Set ou Unicode). On les utilise notamment pour afficher des caractères qui ne peuvent être représentés dans l’encodage en cours, et on les nomme ENTITES.
- Exemple : en SGML, HTML et XML, les chaînes suivantes sont des character references valables représentant la lettre capitale grecque Sigma ("Σ") dont le code UCS est 931 ou x3A3 (car (3x256)+(10x16)+3=931).
- Σ
- Σ
- Σ
- Σ
Comme on le voit, le code numérique (identifié par un "#"), est précédé de "&", et suivi par ";". La méthode provient du SGML , et est utilisée dans ses dérivés tels qu’HTML et XML.
Entités prédéfinies
Dans la description des entités qui vient d’être donnée, l’esperluette & joue le rôle de caractère d’échappement. On entend par là un caractère qui annonce que la suite a une signification spéciale. On a déjà vu un exemple avec l’utilisation du "=" dans le quoted printable.
Le rôle particulier dévolu par exemple à "&" oblige à utiliser un procédé comme les entités pour signaler qu’on veut le représenter lui-même et non pas l’utiliser. Et, plutôt que des codes numériques, on utilisera des abréviations alphabétiques. Par exemple, pour afficher un "&", on utilisera "&" (diminutif de ampersand) ce qui est plus parlant que "&". Mais comme toujours, ce qui facilite la vie de l’utilisateur humain ajoute de la complexité du point de vue de la machine. Ces mnémoniques nécessitent une définition quelque-part, et supposent réunies certaines conditions qui seront abordées plus loin.
XML prévoit par conception 5 entités reconnues automatiquement. :
Signe | Désignation | Fonction | Code ASCII | Entité | |
" | Guillemet (double quote) | Encadre le contenu des attributs | 34 | x22 | " |
& | Esperluette (ampersand) | Annonce une entité | 38 | x26 | & |
' | Apostrophe (single quote) | Encadre le contenu des attributs | 39 | x27 | ' |
< | Inférieur à (lower than) | Commence une balise (marqueur) | 60 | x3C | < |
> | Supérieur à (greater than) | Termine une balise (marqueur) | 62 | x3E | > |
Typographie rudimentaire
Bonnes habitudes
La connaissance de quelques codes permet d’améliorer la présentation des textes visibles sur le Web :
- ou  
- L’espace insécable empêchera de hideux retours à la ligne entre la fin d’un mot et les ":", ";", "?", "!" et "»" qui suivent (ainsi que pour le "«" qui précède). En effet, avant ces signes de ponctuation (ou après le "«"), doit se trouver une (et non pas un, disent les typographes) espace, il ne saurait être question de les accoler à un mot.
- « ou « pour «
- Utiliser les guillemets ouvrants, plus jolis que le banal double quote « " ».
- » ou » pour »
- Ibidem pour les guillemets fermants.
- ’ ou ’ pour ’
- Pour avoir un vrai apostrophe (’) plutôt qu’un simple quote ('). .
- — ou — pour —
- Dans un texte un tant soi peu littéraire, le tiret quadratin « — » est plus agréable que ce minus de trait d’union.
- – ou – pour –
- Alternative au précédent : le tiret demi-quadratin (« – »)
- … ou … points de suspension pour …
- ‑ ou trait d’union insécable
- Ce trait d’union empêche la coupure en fin de ligne d’un terme en deux parties séparées par un "-".
Exercice
Dans ce texte riche en ponctuation, il a fallu puiser dans les tables supplémentaires de l’ISOC pour afficher deux caractères :
- Rangée 1E ("latin étendu additionnel") [http://alis.isoc.org/codage/iso10646/rang_1e.htm] pour le
- C’est « le h minuscule à point souscrit » x1E25 (cf "Isḥan"). Je certifie qu’il s’affiche sans problème sur cette page dans les navigateurs Mozilla et Opera. Pour Internet Explorer 6 sous WinXP, un palliatif peut être trouvé plus loin dans la section Navigateurs/accessibilité
- Rangée 20 ("ponctuation générale et autres") [http://alis.isoc.org/codage/iso10646/rang_20.htm]
- Pour l’apostrophe (ou plutôt guillemet-virgule supérieur culbuté) x201B ("‛Arabi").
L’Ange Gabriel — sur lui le salut ! — avait demandé au prophète — qu’Allâh prie sur lui et le salue ! — « Qu’est-ce que l’Isḥan ? » Il répondit : « Que tu adores Allâh comme si tu Le voyais ; car si tu ne Le vois pas, Lui te voit. » Ibn ‛Arabi – L’extinction dans la contemplation, traduction Michel Vâlsan. |
L’Ange Gabriel — sur lui le salut ! — avait demandé au prophète — qu’Allâh prie sur lui et le salue ! — « Qu’est-ce que l’Isḥan ? » Il répondit : « Que tu adores Allâh comme si tu Le voyais ; car si tu ne Le vois pas, Lui te voit. » Ibn ‛Arabi – L’extinction dans la contemplation, traduction Michel Vâlsan. |
Il n’est pas si difficile d’entrer ces entités. Il existe des éditeurs efficaces qui facilitent la saisie ; et même le plus rudimentaire d’entre-eux permet une mise-à-jour massive en une seule action (fonction "rechercher et modifier") sur l’ensemble d’un fichier.
Notes
- 1.
Vous ne comprenez pas la différence entre saut de ligne et retour chariot ?
- Retour chariot : on appuie à fond sur le levier pour faire revenir à gauche le chariot ce qui fait monter simultanément la feuille d’une ligne. La frappe reprend en début de ligne.
- Saut de ligne : on pousse deux petits coups sur le levier de la machine, et le rouleau qui entraîne la feuille de papier avance de deux demi-interlignes. La frappe se poursuit à l’endroit de la ligne où on était.
- 2. DTD = Document Type Definition. Notion issue de SGML (voir plus loin) par laquelle est définie la structure du type de fichier utilisé (par exemple "HTML"). C’est dans la DTD que se définissent les entités.