Différence entre les types de saut de ligne CR LF, LF et CR?

J’aimerais connaître la différence (avec des exemples si possible) entre les types de saut de ligne CR LF (Windows), LF (Unix) et CR (Macintosh).

C’est vraiment à propos des octets stockés dans un fichier. CR est un bytecode pour le retour chariot (à partir des jours des machines à écrire) et LF même, pour le LF de ligne. Il fait simplement référence aux octets placés en tant que marqueurs de fin de ligne.

Beaucoup plus d’informations, comme toujours, sur Wikipedia .

CR et LF sont des caractères de contrôle, codés respectivement 0x0D (13 décimales) et 0x0A (10 décimales).

Ils sont utilisés pour marquer un saut de ligne dans un fichier texte. Comme vous l’avez indiqué, Windows utilise deux caractères la séquence CR LF; Unix utilise uniquement LF et l’ancien MacOS (pré-OSX MacIntosh) utilisé CR.

Une perspective historique apocryphe:

Comme indiqué par Peter , CR = Carriage Return et LF = Line Feed , deux expressions ont leurs racines dans les anciennes machines à écrire / TTY. LF a déplacé le papier (mais a gardé la position horizontale identique) et CR a ramené le “chariot” de sorte que le prochain caractère tapé soit à la position la plus à gauche sur le papier (mais sur la même ligne). CR + LF faisait les deux, c’est-à-dire se préparer à taper une nouvelle ligne. Comme le temps passait, la sémantique physique des codes ne s’appliquait plus, et comme la mémoire et l’espace sur les disquettes étaient rares, certains concepteurs de systèmes d’exploitation ont décidé d’utiliser uniquement un des caractères, ils ne communiquaient pas très bien entre eux; -)

La plupart des éditeurs de texte modernes et des applications orientées texte proposent des options / parameters, etc. qui permettent la détection automatique de la convention de fin de ligne du fichier et de l’afficher en conséquence.

C’est un bon résumé que j’ai trouvé:

Le caractère Carriage Return (CR) ( 0x0D , \r ) déplace le curseur au début de la ligne sans avancer à la ligne suivante. Ce caractère est utilisé comme nouveau caractère de ligne dans les systèmes d’exploitation Commodore et Early Macintosh (OS-9 et versions antérieures).

Le caractère de saut de ligne (LF) ( 0x0A , \n ) déplace le curseur vers la ligne suivante sans revenir au début de la ligne. Ce caractère est utilisé comme nouveau caractère de ligne dans les systèmes UNIX (Linux, Mac OSX, etc.)

La séquence de fin de ligne ( 0x0D 0x0A , \r\n ) est en réalité deux caractères ASCII, une combinaison des caractères CR et LF. Il déplace le curseur vers le bas jusqu’à la ligne suivante et au début de cette ligne. Ce caractère est utilisé comme nouveau caractère de ligne dans la plupart des autres systèmes d’exploitation non-Unix, y compris Microsoft Windows, Symbian OS et autres.

La source

Comme il n’y a pas de réponse en disant ceci, résume succinctement:

Retour de chariot (MAC avant OSX)

  • CR
  • \ r
  • Code ASCII 13

Line Feed (Linux, MAC OSX)

  • LF
  • \ n
  • Code ASCII 10

Retour chariot et saut de ligne (Windows)

  • CRLF
  • \ r \ n
  • Code ASCII 13 puis code ASCII 10

Si vous voyez du code ASCII dans un format étrange, il ne s’agit que du nombre 13 et 10 dans une base / base différente, généralement la base 8 (octal) ou la base 16 (hexadécimal).

http://www.bluesock.org/~willg/dev/ascii.html

Jeff Atwood a récemment publié un article à ce sujet: The Great Newline Schism

Voici l’essence de Wikipedia :

La séquence CR + LF était couramment utilisée sur de nombreux systèmes informatiques ayant adopté des téléscripteurs, généralement un ASR33, en tant que console, car cette séquence était nécessaire pour positionner ces imprimantes au début d’une nouvelle ligne. Sur ces systèmes, le texte était souvent composé pour être compatible avec ces imprimantes, car le concept de pilotes de périphériques dissimulant ces détails matériels dans l’application n’était pas encore bien développé; les applications devaient parler directement à la machine de télétype et suivre ses conventions. La séparation des deux fonctions dissimulait le fait que la tête d’impression ne pouvait pas retourner de l’extrême droite au début de la ligne suivante dans un temps à un caractère. C’est pourquoi la séquence a toujours été envoyée avec le CR en premier. En fait, il était souvent nécessaire d’envoyer des caractères supplémentaires (CR ou NUL superflus, qui sont ignorés) pour donner à la tête d’impression le temps de se déplacer vers la marge gauche. Même après le remplacement des télétypes par des terminaux avec des débits en bauds plus élevés, de nombreux systèmes d’exploitation prenaient toujours en charge l’envoi automatique de ces caractères de remplissage, pour une compatibilité avec des terminaux moins coûteux.

CR – Code ASCII 13

LF – Code ASCII 10.

Théoriquement, CR ramène le curseur à la première position (à gauche). LF alimente une ligne en déplaçant le curseur d’une ligne vers le bas. C’est ainsi qu’auparavant, vous contrôliez les imprimantes et les moniteurs en mode texte. Ces caractères sont généralement utilisés pour marquer la fin des lignes dans les fichiers texte. Différents systèmes d’exploitation utilisaient différentes conventions. Comme vous l’avez souligné, Windows utilise la combinaison CR / LF alors que les Macs pré-OSX n’utilisent que CR et ainsi de suite.

Les systèmes basés sur ASCII ou sur un jeu de caractères compatible utilisent LF (Line feed, 0x0A, 10 en décimal) ou CR (Carriage return, 0x0D, 13 en décimal) individuellement, ou CR suivi de LF (CR + LF, 0x0D 0x0A); Ces caractères sont basés sur les commandes de l’imprimante: le saut de ligne indique qu’une ligne de papier doit sortir de l’imprimante et qu’un retour chariot indique que le chariot de l’imprimante doit retourner au début de la ligne en cours.

Voici les détails .

Le sortingste état des “séparateurs d’enregistrements” ou des “terminateurs de lignes” est un inheritance de l’âge sombre de l’informatique.

Maintenant, nous tenons pour acquis que tout ce que nous voulons représenter est en quelque sorte des données structurées et conformes à diverses abstractions qui définissent des lignes, des fichiers, des protocoles, des messages, des balises, etc.

Mais il était une fois ce n’était pas tout à fait vrai. Applications caractères de contrôle intégrés et traitement spécifique à l’appareil. Les systèmes sans cerveau qui nécessitaient à la fois CR et LF n’avaient tout simplement pas d’abstraction pour les séparateurs d’enregistrements ou les terminateurs de ligne. Le CR était nécessaire pour que le télétype ou l’affichage vidéo retourne à la colonne un et que le LF (aujourd’hui, NL, même code) était nécessaire pour le faire passer à la ligne suivante. Je suppose que l’idée de faire autre chose que de vider les données brutes sur l’appareil était trop complexe.

Unix et Mac ont en fait spécifié une abstraction pour la fin de ligne, imaginez cela. Malheureusement, ils en ont spécifié différents. (Unix, ahem, est venu en premier.) Et naturellement, ils ont utilisé un code de contrôle qui était déjà “proche” de SOP

Étant donné que la quasi-totalité de nos logiciels d’exploitation d’aujourd’hui sont des descendants des logiciels d’exploitation Unix, Mac ou MS, nous sums confrontés à la confusion de fin de ligne.

NL dérivé de EBCDIC NL = x’15 ‘qui se comparerait logiquement à CRLF x’odoa ascii … cela devient évident quand on déplace physiquement les données des mainframes vers les médiums. Coloquiquement (comme seules les personnes mystérieuses utilisent ebcdic), NL a été assimilé à CR, LF ou CRLF