Me gustaría saber la diferencia (con ejemplos si es posible) entre los tipos de salto de línea CR LF (Windows), LF (Unix) y CR (Macintosh).
line-breaks
eozzy
fuente
fuente
\n
normalmente está representado por un salto de línea, pero no es necesariamente un salto de línea.\r
y\n
son abstracciones utilizadas en ciertos lenguajes de programación. Cerrar esta pregunta pasa por alto las diferencias fundamentales entre las preguntas y perpetúa la desinformación.\n
no significa lo mismo en todos los lenguajes de programación.Respuestas:
Realmente se trata de qué bytes se almacenan en un archivo.
CR
es un código de bytes para el retorno de carro (desde los días de las máquinas de escribir) yLF
, de manera similar, para el avance de línea. Simplemente se refiere a los bytes que se colocan como marcadores de fin de línea.Mucho más información, como siempre, en wikipedia .
fuente
CR
es el personaje de escape\r
yLF
es el personaje de escape\n
. Además, Wikipedia: Newline .CR and LF
es solo el final de la línea y la nueva línea de acuerdo con este enlace , ¿es esto correcto?CR y LF son caracteres de control, respectivamente codificados
0x0D
(13 decimales) y0x0A
(10 decimales).Se utilizan para marcar un salto de línea en un archivo de texto. Como indicó, Windows usa dos caracteres de la secuencia CR LF; Unix solo usa LF y el viejo MacOS (pre-OSX MacIntosh) usaba CR.
Una perspectiva histórica apócrifa:
Como lo indicó Peter , CR = retorno de carro y LF = avance de línea , dos expresiones tienen sus raíces en las viejas máquinas de escribir / TTY. LF movió el papel hacia arriba (pero mantuvo la posición horizontal idéntica) y CR recuperó el "carro" para que el siguiente carácter escrito estuviera en la posición más a la izquierda del papel (pero en la misma línea). CR + LF estaba haciendo ambas cosas, es decir, preparándose para escribir una nueva línea. A medida que pasaba el tiempo, la semántica física de los códigos no era aplicable, y como la memoria y el espacio en el disquete eran muy importantes, algunos diseñadores de sistemas operativos decidieron usar solo uno de los caracteres, simplemente no se comunicaban muy bien entre ellos; -)
La mayoría de los editores de texto modernos y las aplicaciones orientadas a texto ofrecen opciones / configuraciones, etc. que permiten la detección automática de la convención de fin de línea del archivo y mostrarlo en consecuencia.
fuente
CR and LF
es solo el final de la línea y la nueva línea de acuerdo con este enlace , ¿es esto correcto?CR+LF
) pueden mostrarse con líneas nuevas dobles en otros sistemas. Presumiblemente, el editor que muestra el texto admite el retorno de carro y el avance de línea como delimitadores de nueva línea y, como tal, puede crear 2 líneas donde se pretendía 1. Entonces, aunqueCR+LF
podría ser el más compatible, no creo que sea sin problemas.Este es un buen resumen que encontré:
El carácter de retorno de carro (CR) (
0x0D
,\r
) mueve el cursor al comienzo de la línea sin avanzar a la siguiente línea. Este carácter se utiliza como un nuevo carácter de línea en los sistemas operativos Commodore y Early Macintosh (OS-9 y versiones anteriores).El carácter de avance de línea (LF) (
0x0A
,\n
) mueve el cursor hacia abajo a la siguiente línea sin volver al principio de la línea. Este carácter se utiliza como un nuevo carácter de línea en sistemas basados en UNIX (Linux, Mac OSX, etc.)La secuencia de fin de línea (EOL) (
0x0D 0x0A
,\r\n
) es en realidad dos caracteres ASCII, una combinación de los caracteres CR y LF. Mueve el cursor hacia abajo a la siguiente línea y al comienzo de esa línea. Este carácter se utiliza como un nuevo carácter de línea en la mayoría de los sistemas operativos que no son Unix, incluidos Microsoft Windows, Symbian OS y otros.Fuente
fuente
Como no hay una respuesta que indique esto, resumido sucintamente:
Retorno de carro (MAC pre-OSX)
Alimentación de línea (Linux, MAC OSX)
Retorno de carro y avance de línea (Windows)
Si ve el código ASCII en un formato extraño, son simplemente el número 13 y 10 en una base / base diferente, generalmente base 8 (octal) o base 16 (hexadecimal).
http://www.bluesock.org/~willg/dev/ascii.html
fuente
Jeff Atwood tiene una publicación de blog reciente sobre esto: The Great Newline Schism
Aquí está la esencia de Wikipedia :
fuente
<CR><CR><LF>
, así que, por supuesto, experimenté con solo una<CR>
. Envié<CR><LF>A
después de una larga fila, y se podía escuchar laA
impresión antes de que el carro regresara por completo.<CR><CR>
y escribiendo el número correcto de espacios, luego reimprimiendo la misma palabra: una forma primitiva de negrita.CR - Código ASCII 13
LF - Código ASCII 10.
Teóricamente, CR devuelve el cursor a la primera posición (a la izquierda). LF alimenta una línea moviendo el cursor una línea hacia abajo. Así es como en los viejos tiempos controlabas las impresoras y los monitores en modo texto. Estos caracteres generalmente se usan para marcar el final de las líneas en los archivos de texto. Diferentes sistemas operativos utilizan diferentes convenciones. Como señaló, Windows usa la combinación CR / LF, mientras que las Macs anteriores a OSX usan solo CR, etc.
fuente
Aquí están los detalles .
fuente
El triste estado de los "separadores de registros" o "terminadores de línea" es un legado de las edades oscuras de la informática.
Ahora, damos por sentado que todo lo que queremos representar es de alguna manera datos estructurados y se ajusta a varias abstracciones que definen líneas, archivos, protocolos, mensajes, marcas, lo que sea.
Pero había una vez que esto no era exactamente cierto. Aplicaciones de caracteres de control integrados y procesamiento específico del dispositivo. Los sistemas con muerte cerebral que requerían tanto CR como LF simplemente no tenían abstracción para separadores de registros o terminadores de línea. El CR era necesario para que el teletipo o la pantalla de video volvieran a la columna uno y el LF (hoy, NL, el mismo código) era necesario para avanzar a la siguiente línea. Supongo que la idea de hacer algo más que descargar los datos sin procesar en el dispositivo era demasiado compleja.
Unix y Mac en realidad especificaron una abstracción para el final de línea, imagínense eso. Lamentablemente, especificaron diferentes. (Unix, ejem, vino primero.) Y, naturalmente, utilizaron un código de control que ya estaba "cerca" de SOP
Dado que casi todo nuestro software operativo hoy en día es un descendiente de SW operativo de Unix, Mac o MS, estamos atrapados con la línea que termina con la confusión.
fuente
NL derivado de EBCDIC NL = x'15 'que lógicamente se compararía con CRLF x'odoa ascii ... esto se hace evidente cuando se mueven físicamente datos de mainframes a rango medio. Coloquialmente (como solo las personas arcanas usan ebcdic) NL se ha equiparado con CR o LF o CRLF
fuente