Fin de ligne

Un article de Wikipédia, l'encyclopédie libre.

Dans un fichier texte traditionnel, plusieurs conventions non compatibles existent pour stocker la fin de ligne ou la fin de paragraphe[1]. Ces différentes conventions ont pour origines les différences des systèmes informatiques, notamment : Mac, Dos/Windows, Unix/linux.

Ces différences - notamment lorsqu'elles cohabitent dans un même système informatique (en particulier quand les fichiers sont échangés par transfert ftp avec la mauvaise option, par exemple) - peuvent poser des problèmes d'utilisation avec certains logiciels, cela peut notamment empêcher de compter les lignes de manière uniforme, ou rendre mal aisée l'édition des lignes dans un éditeur texte.


Sommaire

[modifier] Représentation sous forme d'octet

Différents codages sont utilisés pour marquer les retours à la ligne [2].

        Unicode  ASCII     EBCDIC*
CR       000D    0D      0D      0D
LF       000A    0A      25      15
CRLF     000D,000A       0D,0A   0D,25   0D,15
NEL*     0085    85      15      25
VT       000B    0B      0B      0B
FF       000C    0C      0C      0C
LS       2028    n/a     n/a     n/a
PS       2029    n/a     n/a     n/a

[modifier] 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 ligne peuvent se noter par : ␍, ␊, ␤.

  • ␍ Carriage Return: Retour chariot
  • ␊ Line Feed
  • ␤ New Line

[modifier] retour chariot

Icône de détail Article détaillé : Retour chariot.

Le retour chariot désigne originellement le mécanisme physique permettant, sur une machine à écrire, au chariot de revenir en butée à droite (soit, du point de vue de l'écrivain, de revenir au début de la ligne).

En informatique, le retour chariot (Carriage return ou CR) est l'un des caractères de contrôle des normes de codage de caractère ASCII et EBCDIC.

Sur le système d'exploitation Mac OS (avant Mac OS X), le retour 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é (PHP, Perl, etc.), \r dénote ce caractère.

[modifier] CRLF

Icône de détail Article détaillé : CRLF.

En informatique, CRLF, acronyme de Carriage Return (retour chariot) Line Feed (saut de ligne), est un caractère spécial ou une séquence de caractères qui indique la fin de la ligne d'un texte. Le CRLF est parfois appelé retour chariot, car avant l'existence des ordinateurs, les machines à écrire faisaient un retour physique du chariot.

CRLF n'est donc pas un caractère ASCII mais l'association de 2 caractères ASCII, le caractère 13 suivi du caractère 10.

CRLF est souvent représenté par \r\n. \r correspond à CR (Return) et \n correspond à LF (eNd of line).

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.

[modifier] LF

Icône de détail Article détaillé : Saut de ligne.

En informatique, le saut de ligne (LF, line feed) est un caractère de contrôle indiquant qu'une ligne devrait être sautée. 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. 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.

On peut parfois les noter par : ␍, ␊, ␤.

[modifier] 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'ambigüité doit être évitée. Dans les autres cas, Unicode définit les traitements à associer à CR, LF, et CRLF.[3]

Par ailleurs, Unicode définit certaines propriétés relatives au découpage automatique du texte sur différentes lignes [4].

[modifier] Voir aussi


[modifier] Références

  1. UAX #13: Unicode Newline Guidelines
  2. UAX #13: Unicode Newline Guidelines
  3. UAX #13: Unicode Newline Guidelines
  4. UAX #14: Line Breaking Properties