Nueva línea

En informática, nueva línea es un carácter especial, o secuencia de caracteres, que indica el final de una línea de texto y el paso a la siguiente. Se le llama así porque el carácter a la derecha del nueva línea aparecerá en la línea de debajo de los caracteres que había a la izquierda, por tanto en una línea nueva.

La codificación del carácter nueva línea no es la misma en todas las arquitecturas ni sistemas operativos, cosa que puede dar problemas cuando se intercambian datos entre ordenadores.

¿Terminador o separador?

Aún se discute si el carácter de nueva línea debería terminar o separar las líneas.

Si se usa como separador, un texto con las líneas A, B, y C quedaría grabado así (representando el carácter de nueva línea con \n):

A \n B \n C

Entonces, la última línea (C) no tiene el código de nueva línea al final. Este comportamiento está poco recomendado, y algunos programas tienen problemas procesando la última línea de un fichero si no acaba con una nueva línea, así que la convención general es tratar \n como terminador:

A \n B \n C \n

Este cambio puede afectar en el recuento de líneas de un fichero, pero no da problemas mayores.

Representaciones

Las aplicaciones y los sistemas operativos normalmente representan el carácter nueva línea con uno o con dos códigos de control:

  • Los sistemas basados en ASCII o en una codificación de caracteres compatible usan LF (salto de línea), CR (retorno de carro), o CRLF (CR seguido de LF):
  • Los sistemas EBCDIC, principalmente mainframes de IBM incluyendo a z/OS (OS/390), i5/OS (OS/400), usan NEL (siguiente línea) como carácter de nueva línea. EBCDIC también tiene caracteres llamados CR y LF, pero el valor numérico del LF es distinto al que se usa en ASCII. Otras variantes de EBCDIC también usan NEL pero con otro valor numérico asignado al carácter.
  • OpenVMS usa un sistema de ficheros basado en registros, y guarda los ficheros de texto con un registro por línea. Por tanto, no se almacena ningún terminador de línea, aunque el sistema puede añadir terminadores a cada línea de forma transparente cuando una aplicación accede a los datos.

Los valores numéricos usados normalmente son:

El CRLF no es más que uno detrás de otro, por tanto 0D 0A en hexadecimal.

Protocolos de red

Muchos protocolos de Internet son textuales, o sea, que envían líneas de texto para hacer las peticiones (además de usar código binario). Por eso, han de controlar cómo se tiene que marcar el final de cada línea.

Por tradición, la mayoría han funcionado usando el CRLF en el nivel de protocolo. Por ejemplo, HTTP, SMTP, FTP e IRC, entre otros. Sin embargo, algunos recomiendan que las aplicaciones también reconozcan un LF suelto.

En la práctica, hay muchas aplicaciones que acaban usando (incorrectamente) el código de nueva línea del lenguaje de programación C, que es \n pero tiene un valor que depende de la plataforma (ver sección N.l. en lenguajes de programación, más abajo).

Esto causa problemas al comunicarse con sistemas que siguen más firmemente el estándar. Por ejemplo, el agente de correo qmail no acepta mensajes de sistemas que envíen solo LF en vez del CRLF requerido. Detalles, en inglés.

Unicode

El estándar Unicode trata el problema definiendo un gran número de caracteres que las aplicaciones han de reconocer como terminadores de línea. Según [1]:

 LF:    Salto de línea, u000A
 CR:    Retorno de carro, u000D
 CR+LF: CR seguido por LF
 NEL:   Next Line, u0085
 FF:    Form Feed, u000C
 LS:    Line Separator, u2028
 PS:    Paragraph Separator, u2029

Parece demasiado complicado frente a otras posibles soluciones, como por ejemplo convertir todos los terminadores a un solo carácter como el LF, pero se ha hecho así para que la conversión pueda ser bidireccional.

Si transformamos un texto EBCDIC cambiando todos los NEL por LF, y luego lo queremos devolver a EBCDIC, no sabríamos si los LF de nuestra codificación corresponden a NEL o al propio LF de EBCDIC.

En Unicode, se puede hacer la transformación sin perder información, de forma que los programas siguen pudiendo reconocer todos los tipos posibles de terminadores de línea.

Historia

ASCII se desarrolló simultáneamente por el ISO y el ASA, la organización predecesora de ANSI. Durante el período 1963-1968, los borradores (preestándar) de ISO permitían usar tanto CRLF como LF para marcar una nueva línea, mientras que los borradores de ASA permitían solo CRLF.

El sistema operativo Multics empezó a desarrollarse en 1964 y usaba solo LF. Unix siguió la práctica de Multics, y sistemas posteriores siguieron a Unix.

La secuencia CR LF era común en los primeros ordenadores que tenían máquinas de teletipo (como el ASR33) como dispositivo de terminal. Esta secuencia era necesaria para posicionar el cabezal de la impresora al principio de una nueva línea. Como esta operación no se podía hacer en tiempo "1 carácter", había que dividirla en dos caracteres. A veces era necesario enviar CR LF NUL (siendo NUL el carácter de control que le manda "no hacer nada"), para asegurarse de que el cabezal de impresión parara de moverse. Después de que estos sistemas mecánicos desaparecieran, la secuencia CR LF dejó de tener sentido, pero aun así se ha seguido usando.

Se especula que QDOS (que Microsoft compró y renombró a MS-DOS) adoptó CRLF para copiar la implementación usada por CP/M. También se dice que CP/M eligió CR+LF para introducir una clara incompatibilidad con Unix, y así intentar evitar una posible denuncia de AT&T/Bell, que decía que CP/M violaba el copyright de Unix porque estaba basado en Unix (según esta teoría).

Otros creen que CP/M se parece más a los sistemas de DEC (como el RSTS/E) que a Unix. En cualquier caso, esta convención de QDOS pasó al siguiente sistema operativo comercializado por Microsoft, el Windows, y sigue igual en la actualidad (2006).

En lenguajes de programación

Para que sea más fácil crear programas portátiles, los lenguajes de programación ofrecen abstracciones para no tener que tratar con las pequeñas diferencias entre sistemas.

El lenguaje de programación C permite usar las secuencias de escape \n (nueva línea) y \r (retorno de carro). Sin embargo, éstas no son equivalentes a LF y CR en general. El estándar C solo garantiza dos cosas:

  1. Cada una de estas secuencias se traduce a un número que cabe en un solo valor char, y que depende de la implementación.
  2. Cuando se escribe a un fichero de tipo texto (en contraposición a un archivo binario), el \n se traduce de forma transparente al código de nueva línea nativo del sistema, que puede ser de más de un carácter. Cuando se lee en modo texto, la secuencia de nueva línea nativa se vuelve a traducir a \n. En modo binario no se hacen estas traducciones.

En las plataformas Unix, donde nació C, la secuencia que indica nueva línea es el código ASCII LF (0x0A), así que al principio se hizo que \n tuviera ese valor. Entonces, como la representación interna y la externa son idénticas, la traducción que hay que hacer en modo texto es nula, y modo texto y binario se comportan de la misma manera. Esto ha hecho que muchos programadores ignoren por completo la distinción, cosa que afecta al software desarrollado, que deja de ser portable.

Otro problema común es usar \n al comunicarse mediante un protocolo de red que requiere CRLF como terminador. En Windows funcionará, ya que \n se traduce a la representación nativa, que es precisament CR+LF, pero en Unix produce solo LF (la representación nativa del carácter nueva línea). Usar \r\n en modo binario es algo mejor, pero tampoco funciona en el caso general. Lo correcto es especificar los valores concretos, en modo binario; por ejemplo, \x0D\x0A

Perl y C++ ofrecen la misma interpretación de '\n' que C. C++ también tiene std::endl, que es la representación de una nueva línea en el sistema subyacente y vacía el stream después de emitirlo. Perl tiene un 'binmode' para las traducciones literales a la hora de leer y escribir en ficheros.

Java también proporciona las secuencias de escape \n y \r, que sí que garantizan que su valor será 0x0A y 0x0D respectivamente. Para que un programa hecho en Java se vea correctamente en el notepad, es necesario poner \r\n. Esto cobra vital importancia si se trata de comunicar nuestro programa en Java con un programa hecho en C mediando un archivo txt.

Las bibliotecas de entrada/salida de Java no traducen estas secuencias automáticamente, como en C. En cambio, ofrecen funciones para escribir una línea completa añadiendo el código nativo de nueva línea, y funciones para leer líneas que aceptan cualquier secuencia como terminador (CR, LF, CRLF).

Problemas comunes

Las diferentes representaciones de la nueva línea en los sistemas operativos a veces causan que al transferir un fichero entre dos ordenadores, se muestre incorrectamente. Por ejemplo, en condiciones normales, los ficheros creados en sistemas Unix o Apple Macintosh se verán como una línea larga en Windows. Y a la inversa: los ficheros creados en un ordenador con Windows se verán extraños con algunos editores, ya que el CR extra que Unix no necesita se mostrará como un ^M al final de cada línea.

El problema puede ser difícil de detectar si algunos programas manejan bien los terminadores de línea ajenos pero otros no. Por ejemplo, un compilador puede fallar con extraños mensajes de error aun cuando el fichero fuente se muestra correcto en la línea de comandos o un editor de texto.

Los navegadores web suelen poder trabajar con páginas codificadas en cualquier sistema, y los editores de texto modernos permiten no solo abrir ficheros de cualquier codificación, sino convertir entre ellas (ver siguiente sección).

Al transferir ficheros por FTP, el cliente puede convertir automáticamente entre diferentes codificaciones si está activado el modo de texto. Sin embargo, si se usa este modo para transferir un archivo binario, el fichero llegará corrupto. Los programas suelen usar heurísticos para detectar si un fichero es binario o no, pero pueden equivocarse.

Utilidades de conversión

En general, un editor de textos es el programa más conveniente para trabajar con ficheros que usan distintos terminadores de línea. La mayoría de editores modernos permiten cualquier combinación con los códigos de control ASCII CR y LF. Por desgracia, el editor predeterminado de Windows (Notepad) no lo permite, aunque Wordpad sí.

El programa de MS-DOS llamado EDIT también se puede usar para convertir un fichero que use los terminadores de línea de tipo Unix. Solo hay que abrir el archivo y volverlo a grabar.

En muchos sistemas Unix se encuentran las utilidades dos2unix y unix2dos, que transforman entre las codificaciones CRLF (DOS/Windows) y LF (Unix). Hay varias versiones de estos programas, con sintaxis algo distintas.

Se puede usar también el programa tr, que sí que está en cualquier sistema tipo Unix, y que permite hacer cualquier tipo de transformación de caracteres. Para pasar de DOS/Windows a Unix, eliminar todos los CR:

tr -d '\r' < fichero_entrada > fichero_salida

Y en la otra dirección: se puede convertir de Unix a DOS con sed:

sed -e 's/$/\r/' fichero_entrada > fichero_salida

En sistemas Unix está el comando file, que permite identificar el tipo de terminadores de línea que usa un fichero.

Véase también

Read other articles:

Bersani beralih ke halaman ini. Untuk penyanyi, lihat Samuele Bersani. Untuk teoretikus sastra, lihat Leo Bersani. Untuk pemain anggar, lihat Giuseppina Bersani. Pier Luigi Bersani Sekretaris Partai DemokratMasa jabatan7 November 2009 – 20 April 2013WakilEnrico LettaPendahuluDario FranceschiniPenggantiGuglielmo EpifaniMenteri Pembangunan EkonomiMasa jabatan17 Mei 2006 – 8 Mei 2008Perdana MenteriRomano ProdiPendahuluClaudio Scajola (Menteri Kegiatan Produktif)PenggantiClaudi…

List of events ← 2016 2015 2014 2017 in Vietnam → 2018 2019 2020 Decades: 1990s 2000s 2010s 2020s See also: Other events of 2017 History of Vietnam Timeline of Vietnamese history List of years in Vietnam Events in the year 2017 in Vietnam. Incumbents Party General Secretary: Nguyễn Phú Trọng President: Trần Đại Quang Prime Minister: Nguyễn Xuân Phúc Assembly Chairperson: Nguyễn Thị Kim Ngân Events APEC Vietnam 2017, a year-long hosting of Asia-Pacific Economic Coop…

Cruise ship operated by Disney Cruise Line Disney Fantasy in St. Thomas in January 2020 History NameDisney Fantasy OwnerDisney Cruise line OperatorDisney Cruise Line Port of registryDisney cruise line Bahamas OrderedFebruary 24, 2007 BuilderMeyer Werft, Papenburg, Germany CostUS$950 million Yard numberS. 688 LaunchedJanuary 10, 2012[2] Sponsored byMariah Carey ChristenedFebruary 28, 2012 CompletedFebruary 9, 2012[1] Maiden voyageMarch 31, 2012[3] In service2012–pre…

Ця стаття потребує додаткових посилань на джерела для поліпшення її перевірності. Будь ласка, допоможіть удосконалити цю статтю, додавши посилання на надійні (авторитетні) джерела. Зверніться на сторінку обговорення за поясненнями та допоможіть виправити недоліки. Матер…

2016年美國總統選舉 ← 2012 2016年11月8日 2020 → 538個選舉人團席位獲勝需270票民意調查投票率55.7%[1][2] ▲ 0.8 %   获提名人 唐納·川普 希拉莉·克林頓 政党 共和黨 民主党 家鄉州 紐約州 紐約州 竞选搭档 迈克·彭斯 蒂姆·凱恩 选举人票 304[3][4][註 1] 227[5] 胜出州/省 30 + 緬-2 20 + DC 民選得票 62,984,828[6] 65,853,514[6] 得…

Type of signal filter This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Low-pass filter – news · newspapers · books · scholar · JSTOR (May 2023) (Learn how and when to remove this message) A low-pass filter is a filter that passes signals with a frequency lower than a selected cutoff frequency and attenuates sign…

В Википедии есть статьи о других людях с такой фамилией, см. Назаров; Назаров, Андрей.Андрей Геннадьевич Назаров Премьер-министр Республики Башкортостан с 17 сентября 2020 Глава региона Радий Хабиров Предшественник Радий Хабиров(как Глава Республики Башкортостан) Рождени…

2023 Niuean general election ← 2020 29 April 2023 Next → All 20 members of the Niue Assembly Premier before election Dalton Tagelagi Independent Elected Premier Dalton Tagelagi Independent Politics of Niue Constitution Premier Dalton Tagelagi Cabinet Assembly Speaker: Hima Douglas Recent elections General: 2014201720202023 Other countries vte General elections were held in Niue on 29 April 2023.[1] The elections were originally planned to be held early, in late Febr…

Skadarlija Skadarlija (Kiril Serbia: Скадарлија) adalah sebuah jalan dan kawasan yang terletak di munisipalitas Stari Grad (kota tua) di kota Beograd, ibu kota Serbia. Kawasan ini merupakan kawasan tua bergaya bohemia yang mirip dengan kawasan Montmartre di kota Paris. Skadarlija adalah tujuan wisata yang paling banyak dikunjungi kedua di kota Beograd setelah Kalemegdan.[1] Banyak penyair dan penulis yang menjadi pengunjung di Skadarlija pada awal abad ke-20. Beberapa pujangga …

Species of Allium This article is about a plant with the Japanese name Rakkyō. For the film series, see Kara no Kyōkai. Chinese onion Conservation status Least Concern  (IUCN 3.1)[1] Scientific classification Kingdom: Plantae Clade: Tracheophytes Clade: Angiosperms Clade: Monocots Order: Asparagales Family: Amaryllidaceae Subfamily: Allioideae Genus: Allium Subgenus: A. subg. Cepa Species: A. chinense Binomial name Allium chinenseG.Don.[2] Synonyms[2] Synonymy…

For the television station in Midland, Texas (1962–1974), see KDCD-TV. Radio station in Texas, United StatesKDCDSan Angelo, TexasUnited StatesFrequency92.9 MHzBrandingLonestar 92.9ProgrammingFormatCountryAffiliationsWestwood OneOwnershipOwnerFour R BroadcastingSister stationsKMDXHistoryFirst air dateJune 1, 1980 (1980-06-01)Former call signsKBIL (1980–1985)KBIL-FM (1985–1993)Call sign meaningTo accompany former CD Country monikerTechnical information[1]Licensing auth…

American magazine supplement Not to be confused with New York Magazine. The New York Times MagazineThe magazine's June 8, 2008, coverEditorJake Silverstein[1]CategoriesNewspaper supplementFrequencyWeeklyCirculation1,623,697 per week[2] (as part of Sunday paper)PublisherArthur Ochs Sulzberger Jr.First issueSeptember 6, 1896; 127 years ago (1896-09-06)CompanyThe New York TimesCountryUnited StatesLanguageEnglishWebsitenytimes.com/magazineISSN0028-7822 The New York …

African diaspora Template‑classThis template is within the scope of WikiProject African diaspora, a collaborative effort to improve the coverage of African diaspora on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.African diasporaWikipedia:WikiProject African diasporaTemplate:WikiProject African diasporaAfrican diaspora articlesTemplateThis template does not require a rating on Wikipedia's content asse…

Graph of US iron and steel production, 1900–2014, data from USGS The US iron and steel industry has paralleled the industry in other countries in technological developments. In the 1800s, the US switched from charcoal to coal in ore smelting, adopted the Bessemer process, and saw the rise of very large integrated steel mills. In the 20th century, the US industry successively adopted the open hearth furnace, then the basic oxygen steelmaking process. Since the American industry peaked in the 19…

Part of a series onDiscrimination Forms Institutional Structural Statistical Taste-based Attributes Age Caste Class Dialect Disability Genetic Hair texture Height Language Looks Mental disorder Race / Ethnicity Skin color Scientific racism Rank Sex Sexual orientation Species Size Viewpoint Social Arophobia Acephobia Adultism Anti-albinism Anti-autism Anti-homelessness Anti-drug addicts Anti-intellectualism Anti-intersex Anti-left handedness Anti-Masonry Antisemitism Aporophobia Audism B…

Piala AFC 2019AFC Cup 2019Informasi turnamenJadwalpenyelenggaraan5 Februari s.d. 13 Maret 2019 (kualifikasi)25 Februari s.d. 4 November 2019 (utama)Jumlahtim peserta43 (total)36 (utama) (dari 26 asosiasi)Hasil turnamenJuara Al-Ahed (gelar ke-1)Tempat kedua April 25Statistik turnamenJumlahpertandingan127Jumlah gol386 (3,04 per pertandingan)Jumlahpenonton428.416 (3.373 per pertandingan)Pemain terbaik Mehdi KhalilPencetak golterbanyak Bienvenido Marañón(10 gol)Penghargaanfair play …

Radio station in Watkinsville–Athens, Georgia For the Gainesville, Florida radio station that held the call sign WPUP from 1962 to 1963, see WAJD. For the Maysville, Georgia radio station that held the call sign WPUP from 1990 to 2008, see WXKT. WPUPWatkinsville, GeorgiaBroadcast areaAthens, GeorgiaFrequency100.1 MHzBrandingPower 100.1ProgrammingFormatTop 40 (CHR)OwnershipOwnerCox Media Group(Cox Radio, LLC)Sister stationsWNGC, WGAU, WXKT, WGMG, WRFCHistoryFirst air dateJune 1, 1970 (June…

رشة جريئةأحد ملصقات الفيلممعلومات عامةتاريخ الصدور 2001 مدة العرض 98 دقيقة اللغة الأصلية العربية البلد  مصر الطاقمالمخرج سعيد حامد البطولة  القائمة ... أشرف عبد الباقي ياسمين عبد العزيز لطفي لبيب علي حسنين محمد يوسف هالة فاخر سامي العدل شعبان عبد الرحيم تعديل - تعديل مصدري…

  لمعانٍ أخرى، طالع نيو ريتشموند (توضيح). نيو ريتشموند، أوهايو نيو ريتشموند     الإحداثيات 38°57′18″N 84°16′54″W / 38.955°N 84.2817°W / 38.955; -84.2817   [1] تاريخ التأسيس 3 يونيو 1778  تقسيم إداري  البلد الولايات المتحدة[2]  التقسيم الأعلى مقاطعة كليرمونت  …

This article is part of a series on theHistory of AustraliaSir Donald Bradman, Australian international cricketer Timeline and periods Prehistory European exploration (sea) European exploration (land) 1788–1850 1851–1900 1901–1945 1945–present Topics Abortion Agriculture Antisemitism Anzac Day Banking Capital punishment Civil rights Cinema Constitution Diplomacy Economics Eureka Rebellion Federation 1901 Federal Flag Design Competition Historiography Immigration Labour LGBT Military Mona…