Fin de ligne
Dans un fichier texte, plusieurs conventions incompatibles existent pour représenter la fin de ligne ou la fin de paragraphe[1]. Les trois conventions principales trouvent leur origine dans des systèmes d’exploitation concurrents.
- Dans la convention « Unix », la fin de ligne est indiquée par le caractère saut de ligne (
LF
, code 10 de la table ASCII). - Dans la convention « Mac », la fin de ligne est indiquée par le caractère retour chariot (
CR
, code 13 de la table ASCII). - Dans la convention « DOS », la fin de ligne est indiquée par la combinaison des deux caractères
CR
puisLF
.- C’est la convention en vigueur sur les systèmes DEC, RT-11 et généralement tous les premiers systèmes non-Unix et non-IBM, CP/M, MP/M, MS-DOS, OS/2 et Microsoft Windows.
Ces différences — surtout lorsqu'elles cohabitent dans un même système informatique (par exemple quand les fichiers sont échangés par FTP avec la mauvaise option, par exemple) — peuvent poser des problèmes d'utilisation avec certains logiciels, cela peut notamment fausser les comptages de lignes, ou rendre malaisée l'édition des lignes dans un éditeur de texte.
Quand plusieurs conventions cohabitent dans un même système informatique (ce qui se produit par exemple quand des utilisateurs de systèmes d’exploitation différents s’échangent des fichiers texte), ces différences peuvent entraver le fonctionnement de certains logiciels qui ne savent traiter qu’une seule convention. Cela peut notamment fausser les comptages de lignes, ou rendre malaisée l'édition des lignes dans un éditeur de texte.
La fin de ligne est parfois représentée par le caractère « ↲ », un peu comme la fin d'un paragraphe qui est représentée par le pied-de-mouche « ¶ ». Dans certains contextes, notamment celui de la versification, on emploie le caractère « / » pour représenter une fin de ligne.[pertinence contestée]
Représentation sous forme d'octet
Caractère | Unicode | ASCII | EBCDIC* |
---|---|---|---|
CR | 000D | 0D | 0D |
LF | 000A | 0A | 15 |
CRLF | 000D,000A | 0D,0A | 0D,15 |
NEL* | 0085 | 85 | 25 |
VT | 000B | 0B | 0B |
FF | 000C | 0C | 0C |
LS | 2028 | n/a | n/a |
PS | 2029 | n/a | n/a |
Les retours à la ligne habituels
Mis à part les nouvelles fonctionnalités d'Unicode, et les spécificités d’EBCDIC, les caractères utilisés pour marquer les nouvelles lignes peuvent se noter par : ␍, ␊, .
- ␍ : « Carriage Return » (Retour de chariot) ;
- ␊ : « Line Feed » ;
-  : « New Line ».
Retour de chariot
Le retour de chariot désigne le mécanisme physique permettant, sur une machine à écrire, au chariot de revenir en butée à gauche (soit, du point de vue de l'écrivain, de revenir au début de la ligne).
En informatique, il existe un caractère de contrôle (au moins en ASCII et EBCDIC) retour de chariot (abrégé CR pour l'anglais Carriage return).
Sur le système d'exploitation Mac OS (avant Mac OS X), le caractère retour de chariot marque la fin d'un paragraphe.
En ASCII, CR est indexé comme le caractère 13 en notation décimale et 0D en notation hexadécimale.
En langage C, ainsi que dans beaucoup d'autres langages qu'il a influencés (PHP, Perl, etc.), \r
dénote ce caractère.
CRLF
En informatique, CRLF, abréviation de Carriage Return Line Feed, est une séquence de caractères qui indique la fin de la ligne d'un texte dans les systèmes DOS/Windows.
En ASCII, c'est le caractère 13 suivi du caractère 10. En C et autres, il sera représenté par \r\n
. \r
correspond à CR (Carriage Return) et \n
correspond à LF (Line Feed).
Le CRLF est surtout utilisé sous Windows, mais d'autres systèmes d'exploitation le reconnaissent. Cependant, certains logiciels ont des standards qui les empêchent de reconnaître le CRLF. Il existe des programmes qui convertissent le CRLF en un autre caractère de contrôle équivalent.
LF
En informatique, le saut de ligne (LF, line feed) est un caractère de contrôle indiquant le passage à la ligne de texte suivante. Son code ASCII est 10 (0A en hexadécimal). Le saut de ligne était à l'origine une commande d'imprimante utilisée conjointement avec le retour chariot (CR). Après l'exécution d'un CRLF, la tête d'impression revient complètement à gauche et saute une ligne, prête à commencer une nouvelle ligne de texte.
CRLF a par la suite été adopté comme la fin de ligne standard pour les communications réseau, un choix qui, rétrospectivement, est généralement considéré comme une erreur[réf. souhaitée]. Cependant, cet usage a été maintenu sous MS-DOS et son descendant Microsoft Windows et ne disparaîtra donc pas dans un futur proche. On trouve donc dans les fichiers textes Windows, en hexadécimal, la chaine 0D0A.
Sous Unix, un saut de ligne est plus communément appelé une nouvelle ligne : sur un système d'exploitation basé sur Unix, un saut de ligne est interprété comme une instruction ayant le même effet sur un terminal que CRLF l'a sur une imprimante. Il n'a pas été jugé nécessaire d'afficher des caractères d'impression sur l'ordinateur.
Le langage de programmation C, tirant ses origines d'Unix, reflète cet usage : en C, \n
est le caractère d'échappement pour une nouvelle ligne.
Apple a aussi simplifié le CRLF sur ses systèmes d'exploitation en utilisant plutôt CR sans LF. Les systèmes d'exploitation d'Apple ont continué d'utiliser le retour chariot comme fin de ligne jusqu'à Mac OS X, qui est en partie basé sur Unix.
Les séparateurs Unicode
Le standard Unicode Standard définit deux séparateurs de caractères non ambigus : le séparateur de paragraphes (PS = 2029 base 16) et le séparateur de ligne (LS = 2028 base 16). Dans du texte Unicode, les caractères PS et LS doivent être utilisés lorsque l'ambiguïté doit être évitée. Dans les autres cas, Unicode définit les traitements à associer à CR, LF, et CRLF[1].
Par ailleurs, Unicode définit certaines propriétés relatives au découpage automatique du texte sur différentes lignes[2].
à évoquer les séparateurs; "Group Separator" (GS 001D base 16) et "Record Separator" (RS 001E base 16) existent depuis ASCII et sont bien sur présents dans Unicode.
Autres caractères Unicode
Afin de permettre la saisie de texte évoquant les caractères de fin de ligne, Unicode définit des caractères à cet usage:
- ⏎ : "Symbole retour de chariot" du groupe "Signes techniques divers" (23CE)
- ⮐ : "Retour de chariot à gauche" du groupe "Divers symboles et flèches" (2B90)
- ⮑ : "Retour de chariot à droite" du groupe "Divers symboles et flèches" (2B91)
- ⮒ : "Nouvelle ligne à gauche" du groupe "Divers symboles et flèches" (2B92)
- ⮓ : "Nouvelle ligne à droite" du groupe "Divers symboles et flèches" (2B93)
Du groupe "Pictogrammes de commande" représentation des vrais caractères de commande informatique:
- ␍ : "Symbole de retour de chariot" (240D) représentant le "Retour de chariot" (000D)
- ␊ : "Symbole de changement de ligne" (240A) représentant le "Changement de ligne, passage à la ligne" (000A)
-  : "Symbole de nouvelle ligne" (2424)