155 votos

Diferencia entre los tipos de salto de línea CR LF, LF y CR

Me gustaría saber la diferencia (con ejemplos si es posible) entre CR LF (Windows), LF (Unix) y CR (Macintosh) tipos de salto de línea.

201voto

mjv Puntos 38081

CR y LF son caracteres de control, codificados respectivamente como 0x0D (13 decimal) y 0x0A (10 decimal).

Se utilizan para marcar un salto de línea en un archivo de texto. Como indicaste, Windows utiliza dos caracteres en la secuencia CR LF; Unix (y macOS a partir de Mac OS X 10.0) solo utiliza LF; y el clásico Mac OS (antes de 10.0) utilizaba CR.

Una perspectiva histórica apócrifa:

Según lo indicado por Peter, CR = Carriage Return (retorno de carro) y LF = Line Feed (avance de línea), dos expresiones con raíces en las antiguas máquinas de escribir / TTY. LF movía el papel hacia arriba (pero mantenía la posición horizontal idéntica) y CR devolvía la "carroza" para que el siguiente carácter escrito quedara en la posición más a la izquierda del papel (pero en la misma línea). CR+LF hacía ambas cosas, es decir, preparaba para escribir una nueva línea. Con el tiempo, la semántica física de los códigos dejó de ser aplicable, y debido a que la memoria y el espacio de disco flexible eran un recurso escaso, algunos diseñadores de sistemas operativos decidieron utilizar solo uno de los caracteres, simplemente no comunicaron muy bien entre ellos ;-)

La mayoría de los editores de texto modernos y aplicaciones orientadas a texto ofrecen opciones/configuraciones, etc. que permiten detectar automáticamente la convención de fin de línea del archivo y mostrarla en consecuencia.

111voto

Taylor Leese Puntos 18895

Este es un buen resumen que encontré:

El carácter de Retorno de Carro (CR) (0x0D, \r) mueve el cursor al principio de la línea sin avanzar a la siguiente línea. Este carácter se utiliza como un carácter de nueva línea en los sistemas operativos de Commodore y los sistemas operativos Macintosh tempranos (Mac OS 9 y anteriores).

El carácter de Avance de Línea (LF) (0x0A, \n) mueve el cursor hacia abajo a la siguiente línea sin regresar al principio de la línea. Este carácter se utiliza como un carácter de nueva línea en sistemas basados en Unix (Linux, Mac OS X, etc.)

La secuencia de Fin de Línea (EOL) (0x0D 0x0A, \r\n) en realidad son dos caracteres ASCII, una combinación de los caracteres CR y LF. Mueve el cursor hacia abajo a la siguiente línea y al principio de esa línea. Este carácter se utiliza como un carácter de nueva línea en la mayoría de los otros sistemas operativos no-Unix incluyendo Microsoft Windows, Symbian y otros.

Fuente

83voto

Peter Puntos 38320

Realmente se trata simplemente de qué bytes se almacenan en un archivo. CR es un código de bytes para retorno de carro (de la época de las máquinas de escribir) y LF de manera similar, para avance de línea. Simplemente se refiere a los bytes que se colocan como marcadores de fin de línea.

Hay mucha más información, como siempre, en Wikipedia.

17voto

Manu Puntos 10901

Jeff Atwood tiene una publicación en su blog sobre esto: The Great Newline Schism

Aquí está la esencia desde Wikipedia:

La secuencia CR+LF era de uso común en muchos sistemas informáticos tempranos que habían adoptado máquinas telegráficas, típicamente una ASR33, como dispositivo de consola, porque esta secuencia era necesaria para posicionar esas impresoras en el inicio de una nueva línea. En estos sistemas, el texto era compuesto a menudo de manera rutinaria para ser compatible con estas impresoras, ya que el concepto de controladores de dispositivos que ocultaban estos detalles de hardware a la aplicación aún no estaba muy desarrollado; las aplicaciones tenían que comunicarse directamente con la máquina telegráfica y seguir sus convenciones. La separación de las dos funciones ocultaba el hecho de que la cabeza de impresión no podía regresar desde el extremo derecho al inicio de la próxima línea en un tiempo de un solo carácter. Es por eso que la secuencia siempre se enviaba con el CR primero. De hecho, a menudo era necesario enviar caracteres extra (CRs o NULs superfluos, que son ignorados) para darle tiempo a la cabeza de impresión para moverse al margen izquierdo. Incluso después de que las máquinas telegráficas fueran reemplazadas por terminales informáticas con mayores velocidades de baudios, muchos sistemas operativos aún admitían el envío automático de estos caracteres de relleno, por compatibilidad con terminales más baratos que requerían múltiples tiempos de caracteres para desplazar la pantalla.

10voto

DmitryK Puntos 3824

CR - código ASCII 13

LF - código ASCII 10.

Teóricamente, CR devuelve el cursor a la primera posición (en la izquierda). LF alimenta una línea, moviendo el cursor una línea hacia abajo. Así es como en los viejos tiempos se controlaban las impresoras y monitores en modo de texto.

Estos caracteres suelen usarse para marcar el final de las líneas en archivos de texto. Diferentes sistemas operativos usaban diferentes convenciones. Como señalaste, Windows utiliza la combinación CR/LF mientras que las Macs pre-OS X solo usan CR y así sucesivamente.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X