Question 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).


453
2017-10-12 04:47


origine


Réponses:


Il s'agit vraiment de savoir quels octets sont stockés dans un fichier. CR est un bytecode pour le retour chariot (à partir des jours de machines à écrire) et LF de même, pour le saut de ligne. Il se réfère uniquement aux octets placés en tant que marqueurs de fin de ligne.

Bien plus d'informations, comme toujours, sur Wikipédia.


212
2017-10-12 04:52



CR et LF sont des caractères de contrôle, respectivement codés 0x0D (13 décimal) 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 n'utilise que LF et l'ancien MacOS (pré-OSX MacIntosh) utilisé CR.

Une perspective historique apocryphe:

Comme indiqué par Peter, CR = Retour de voiture et LF = Saut de ligne, deux expressions ont leurs racines dans les vieilles machines à écrire / ATS. LF a déplacé le papier (mais a gardé la position horizontale identique) et CR a ramené le «chariot» de sorte que le caractère suivant soit tapé à la position la plus à gauche sur le papier (mais sur la même ligne). CR + LF faisait les deux, c'est-à-dire se préparait à taper une nouvelle ligne. Au fil du temps, la sémantique physique des codes ne s'appliquait pas, et comme la mémoire et l'espace sur disquette étaient essentiels, certains concepteurs d'OS ont décidé d'utiliser uniquement l'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 offrent des options / paramètres, etc. qui permettent la détection automatique de la convention de fin de ligne du fichier et de l'afficher en conséquence.


501
2017-10-12 04:52



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

Le caractère de retour chariot (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 sur 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 (EOL) (0x0D 0x0A, \r\n) est en fait deux caractères ASCII, une combinaison des caractères CR et LF. Il déplace le curseur 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


296
2017-10-12 04:54



Puisqu'il n'y a pas de réponse indiquant cela, résumée succinctement:

Retour de voiture (MAC pré-OSX)

  • CR
  • \ r
  • Code ASCII 13

Saut de ligne (Linux, MAC OSX)

  • LF
  • \ n
  • Code ASCII 10

Retour de chariot et saut de ligne (Les fenêtres)

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

Si vous voyez un code ASCII dans un format étrange, ils sont simplement les numéros 13 et 10 dans une base / base différente, généralement base 8 (octal) ou base 16 (hexadécimal).

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


107
2017-08-31 22:07



Jeff Atwood a publié un billet récent à ce sujet: Le grand schisme de Newline

Voici l'essence de Wikipédia:

La séquence CR + LF était couramment utilisée   sur de nombreux systèmes informatiques précoces   avait adopté des machines de télétype,   généralement un ASR33, en tant que console   dispositif, parce que cette séquence était   nécessaire pour positionner ces imprimantes à   le début d'une nouvelle ligne. Sur ces   systèmes, le texte était souvent routinier   composé pour être compatible avec ces   imprimantes, depuis le concept de périphérique   les conducteurs qui cachent de tels détails matériels   de l'application n'était pas encore bien   développé; les applications devaient parler   directement à la machine de télétype et   suivez ses conventions. La séparation   des deux fonctions dissimulé le   fait que la tête d'impression ne pouvait pas   revenir de l'extrême droite à la   début de la ligne suivante dans   l'heure d'un caractère. C'est pourquoi le   la séquence a toujours été envoyée avec le CR   premier. En fait, il était souvent nécessaire   envoyer des caractères supplémentaires (étrangers   CR ou NUL, qui sont ignorés) à   donner à la tête d'impression le temps de passer à   la marge de gauche. Même après les télétypes   ont été remplacés par des terminaux informatiques   avec des débits en bauds plus élevés, beaucoup de   systèmes toujours pris en charge automatique   l'envoi de ces caractères de remplissage, pour   compatibilité avec des terminaux moins chers   qui nécessitait plusieurs temps de caractères   pour faire défiler l'affichage.


37
2018-01-20 19:53



CR - Code ASCII 13

LF - Code ASCII 10.

Théoriquement, CR renvoie le curseur à la première position (à gauche). LF nourrit une ligne en déplaçant le curseur d'une ligne vers le bas. C'est ainsi qu'autrefois 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 ont utilisé 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.


17
2017-10-12 04:55



Systèmes basés sur ASCII ou un   jeu de caractères compatible utiliser soit LF   (Saut de ligne, 0x0A, 10       en décimal) ou CR (retour chariot, 0x0D, 13 en décimal)   individuellement, ou CR suivi par       LF (CR + LF, 0x0D 0x0A);       Ces caractères sont basés sur les commandes de l'imprimante: Le saut de ligne   a indiqué qu'une ligne de       le papier doit sortir de l'imprimante et un retour chariot   indiqué que l'imprimante       Le chariot doit retourner au début de la ligne en cours.

Voici la détails.


7
2017-10-12 04:52



Le triste état des "séparateurs d'enregistrements" ou des "terminateurs de lignes" est un héritage de l'âge sombre de l'informatique.

Maintenant, nous prenons pour acquis que tout ce que nous voulons représenter est en quelque sorte des données structurées et se conforme à diverses abstractions qui définissent des lignes, des fichiers, des protocoles, des messages, des balisages, peu importe.

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 première colonne et la LF (aujourd'hui, NL, même code) était nécessaire pour l'amener à 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 spécifié un abstraction pour la fin de la ligne, imaginez ça. Malheureusement, ils 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 S.O.P.

Puisque presque tous nos logiciels d'exploitation sont aujourd'hui des descendants d'Unix, Mac ou MS fonctionnant en SW, nous sommes bloqués par la confusion de fin de ligne.


5
2017-10-12 05:10



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. Littéralement (comme seules les personnes arcanes utilisent ebcdic) NL a été assimilé à CR ou LF ou CRLF


0
2018-06-16 00:45