Newline

Last updated

Newline inserted between the words "Hello" and "world" Illustration of a newline.png
Newline inserted between the words "Hello" and "world"

A newline (frequently called line ending, end of line (EOL), next line (NEL) or line break) is a control character or sequence of control characters in character encoding specifications such as ASCII, EBCDIC, Unicode, etc. This character, or a sequence of characters, is used to signify the end of a line of text and the start of a new one. [1]

Contents

History

In the mid-1800s, long before the advent of teleprinters and teletype machines, Morse code operators or telegraphists invented and used Morse code prosigns to encode white space text formatting in formal written text messages. In particular the Morse prosign BT (mnemonic break text) represented by the concatenation of literal textual Morse codes "B" and "T" characters sent without the normal inter-character spacing is used in Morse code to encode and indicate a new line or new section in a formal text message.

Later, in the age of modern teleprinters, standardized character set control codes were developed to aid in white space text formatting. ASCII was developed simultaneously by the International Organization for Standardization (ISO) and the American Standards Association (ASA), the latter being the predecessor organization to American National Standards Institute (ANSI). During the period of 1963 to 1968, the ISO draft standards supported the use of either CR+LF or LF alone as a newline, while the ASA drafts supported only CR+LF.

The sequence CR+LF was commonly used on many early computer systems that had adopted Teletype machines—typically a Teletype Model 33 ASR—as a console device, because this sequence was required to position those printers at the start of a new line. The separation of newline into two functions concealed the fact that the print head could not return from the far right to the beginning of the next line in time to print the next character. Any character printed after a CR would often print as a smudge in the middle of the page while the print head was still moving the carriage back to the first position. "The solution was to make the newline two characters: CR to move the carriage to column one, and LF to move the paper up." [2] In fact, it was often necessary to send extra padding characters—extraneous CRs or NULs—which are ignored but give the print head time to move to the left margin. Many early video displays also required multiple character times to scroll the display.

On such systems, applications had to talk directly to the Teletype machine and follow its conventions since the concept of device drivers hiding such hardware details from the application was not yet well developed. Therefore, text was routinely composed to satisfy the needs of Teletype machines. Most minicomputer systems from DEC used this convention. CP/M also used it in order to print on the same terminals that minicomputers used. From there MS-DOS (1981) adopted CP/M's CR+LF in order to be compatible, and this convention was inherited by Microsoft's later Windows operating system.

The Multics operating system began development in 1964 and used LF alone as its newline. Multics used a device driver to translate this character to whatever sequence a printer needed (including extra padding characters), and the single byte was more convenient for programming. What seems like a more obvious choice—CR—was not used, as CR provided the useful function of overprinting one line with another to create boldface, underscore and strikethrough effects. Perhaps more importantly, the use of LF alone as a line terminator had already been incorporated into drafts of the eventual ISO/IEC 646 standard. Unix followed the Multics practice, and later Unix-like systems followed Unix. This created conflicts between Windows and Unix-like operating systems, whereby files composed on one operating system could not be properly formatted or interpreted by another operating system (for example a UNIX shell script written in a Windows text editor like Notepad [3] [4] ).

Representation

The concepts of carriage return (CR) and line feed (LF) are closely associated and can be considered either separately or together. In the physical media of typewriters and printers, two axes of motion, "down" and "across", are needed to create a new line on the page. Although the design of a machine (typewriter or printer) must consider them separately, the abstract logic of software can combine them together as one event. This is why a newline in character encoding can be defined as CR and LF combined into one (commonly called CR+LF or CRLF).

Some character sets provide a separate newline character code. EBCDIC, for example, provides an NL character code in addition to the CR and LF codes. Unicode, in addition to providing the ASCII CR and LF control codes, also provides a "next line" (NEL) control code, as well as control codes for "line separator" and "paragraph separator" markers. Unicode also contains printable characters for visually representing line feed ␊, carriage return ␍, and other C0 control codes (as well as a generic newline, ␤) in the Control Pictures block.

Software applications and operating system representation of a newline with one or two control characters
Operating system Character encoding Abbreviation hex value dec value Escape sequence
Multics
POSIX standard oriented systems: Unix and Unix-like systems (Linux, macOS, *BSD, AIX, Xenix, etc.), QNX 4+
Others: BeOS, Amiga, RISC OS, and others [5]
ASCII LF0A10\n
Windows, MS-DOS compatibles, Atari TOS, DEC TOPS-10, RT-11, CP/M, MP/M, OS/2, Symbian OS, Palm OS, Amstrad CPC, and most other early non-Unix and non-IBM operating systemsCR LF0D 0A13 10\r\n
Commodore 64, Commodore 128, Acorn BBC, ZX Spectrum, TRS-80, Apple II, Oberon, classic Mac OS, HP Series 80, MIT Lisp Machine, and OS-9 CR0D13\r
Acorn BBC [6] and RISC OS spooled text output [7] LF CR0A 0D10 13\n\r
QNX pre-POSIX implementation (version < 4) RS 1E30\036
Atari 8-bit computers ATASCII EOL9B155
IBM mainframe systems, including z/OS (OS/390) and IBM i (OS/400) EBCDIC NL1521\025
ZX80 and ZX81 (home computers from Sinclair Research Ltd) ZX80/ZX81 proprietary encoding76118

Communication protocols

Many communications protocols have some sort of new line convention. In particular, protocols published by the Internet Engineering Task Force (IETF) typically use the ASCII CRLF sequence.

In some older protocols, the new line may be followed by a checksum or parity character.

Unicode

The Unicode standard defines a number of characters that conforming applications should recognize as line terminators: [9]

  LF :    Line Feed, U+000A
  VT :    Vertical Tab, U+000B
  FF :    Form Feed, U+000C
  CR :    Carriage Return, U+000D
 CR+LF: CR (U+000D) followed by LF (U+000A)
  NEL :   Next Line, U+0085
  LS :    Line Separator, U+2028
  PS :    Paragraph Separator, U+2029

While it may seem overly complicated compared to an approach such as converting all line terminators to a single character (e.g. LF), because Unicode is designed to preserve all information when converting a text file from any existing encoding to Unicode and back (round-trip integrity), Unicode needs to make the same distinctions between line breaks made by other encodings.

For example: NL is part of EBCDIC, which uses code 0x15; it is normally mapped to Unicode NEL, 0x85, which is a control character in the C1 control set. [10] As such, it is defined by ECMA 48, [11] and recognized by encodings compliant with ISO/IEC 2022 (which is equivalent to ECMA 35). [12] C1 control set is also compatible with ISO-8859-1.[ citation needed ] The approach taken in the Unicode standard allows round-trip transformation to be information-preserving while still enabling applications to recognize all possible types of line terminators.

Recognizing and using the newline codes greater than 0x7F (NEL, LS and PS) is not often done. They are multiple bytes in UTF-8, and the code for NEL has been used as the ellipsis () character in Windows-1252. For instance:

The Unicode special characters U+2424 (SYMBOL FOR NEWLINE, ), U+23CE (RETURN SYMBOL, ), U+240D (SYMBOL FOR CARRIAGE RETURN, ) and U+240A (SYMBOL FOR LINE FEED, ) are glyphs intended for presenting a user-visible character to the reader of the document, and are thus not recognized themselves as a newline.

In programming languages

To facilitate creating portable programs, programming languages provide some abstractions to deal with the different types of newline sequences used in different environments.

The C language provides the escape sequences '\n' (newline) and '\r' (carriage return). However, these are not required to be equivalent to the ASCII LF and CR control characters. The C standard only guarantees two traits:

  1. Each of these escape sequences maps to a unique implementation-defined number that can be stored in one char value.
  2. When writing to a file, device node, or socket/fifo in text mode, '\n' is transparently translated to the native newline sequence used by the system, which may be longer than one character. When reading in text mode, the native newline sequence is translated back to '\n'. In binary mode, no translation is performed, and the internal representation produced by '\n' is output directly.

On Unix operating system platforms, where C originated, the native newline sequence is ASCII LF (0x0A), so '\n' was simply defined to be that value. With the internal and external representation being identical, the translation performed in text mode is a no-op, and Unix has no notion of text mode or binary mode. This has caused many programmers who developed their software on Unix systems simply to ignore the distinction completely, resulting in code that is not portable to different platforms.

The C library function fgets() is best avoided in binary mode because any file not written with the Unix newline convention will be misread. Also, in text mode, any file not written with the system's native newline sequence (such as a file created on a Unix system, then copied to a Windows system) will be misread as well.

Another common problem is the use of '\n' when communicating using an Internet protocol that mandates the use of ASCII CR+LF for ending lines. Writing '\n' to a text mode stream works correctly on Windows systems, but produces only LF on Unix, and something completely different on more exotic systems. Using "\r\n" in binary mode is slightly better.

Many languages, such as C++, Perl, [20] and Haskell provide the same interpretation of '\n' as C. C++ has an alternative input/output (I/O) model where the manipulator std::endl can be used to output a newline (and flushes the stream buffer).

Java, PHP, [21] and Python [22] provide the '\r\n' sequence (for ASCII CR+LF). In contrast to C, these are guaranteed to represent the values U+000D and U+000A, respectively.

The Java input/output (I/O) libraries do not transparently translate these into platform-dependent newline sequences on input or output. Instead, they provide functions for writing a full line that automatically add the native newline sequence, and functions for reading lines that accept any of CR, LF, or CR+LF as a line terminator (see BufferedReader.readLine()). The System.lineSeparator() method can be used to retrieve the underlying line separator.

Example:

Stringeol=System.lineSeparator();StringlineColor="Color: Red"+eol;

Python permits "Universal Newline Support" when opening a file for reading, when importing modules, and when executing a file. [23]

Some languages have created special variables, constants, and subroutines to facilitate newlines during program execution. In some languages such as PHP and Perl, double quotes are required to perform escape substitution for all escape sequences, including '\n' and '\r'. In PHP, to avoid portability problems, newline sequences should be issued using the PHP_EOL constant. [24]

Example in C#:

stringeol=Environment.NewLine;stringlineColor="Color: Red"+eol;stringeol2="\n";stringlineColor2="Color: Blue"+eol2;

Issues with different newline formats

A text file created with gedit and viewed with a hex editor. Besides the text objects, there are only EOL markers with the hexadecimal value 0A. Newline hex 0A.png
A text file created with gedit and viewed with a hex editor. Besides the text objects, there are only EOL markers with the hexadecimal value 0A.

The different newline conventions cause text files that have been transferred between systems of different types to be displayed incorrectly.

Text in files created with programs which are common on Unix-like or classic Mac OS, appear as a single long line on most programs common to MS-DOS and Microsoft Windows because these do not display a single line feed or a single carriage return as a line break.

Conversely, when viewing a file originating from a Windows computer on a Unix-like system, the extra CR may be displayed as a second line break, as ^M, or as <cr> at the end of each line.

Furthermore, programs other than text editors may not accept a file, e.g. some configuration file, encoded using the foreign newline convention, as a valid file.

The problem can be hard to spot because some programs handle the foreign newlines properly while others do not. For example, a compiler may fail with obscure syntax errors even though the source file looks correct when displayed on the console or in an editor. Modern text editors generally recognize all flavours of CR+LF newlines and allow users to convert between the different standards. Web browsers are usually also capable of displaying text files and websites which use different types of newlines.

Even if a program supports different newline conventions, these features are often not sufficiently labeled, described, or documented. Typically a menu or combo-box enumerating different newline conventions will be displayed to users without an indication if the selection will re-interpret, temporarily convert, or permanently convert the newlines. Some programs will implicitly convert on open, copy, paste, or save—often inconsistently.

Most textual Internet protocols (including HTTP, SMTP, FTP, IRC, and many others) mandate the use of ASCII CR+LF ('\r\n', 0x0D 0x0A) on the protocol level, but recommend that tolerant applications recognize lone LF ('\n', 0x0A) as well. Despite the dictated standard, many applications erroneously use the C newline escape sequence '\n' (LF) instead of the correct combination of carriage return escape and newline escape sequences '\r\n' (CR+LF) (see section Newline in programming languages above). This accidental use of the wrong escape sequences leads to problems when trying to communicate with systems adhering to the stricter interpretation of the standards instead of the suggested tolerant interpretation. One such intolerant system is the qmail mail transfer agent that actively refuses to accept messages from systems that send bare LF instead of the required CR+LF. [25]

The standard Internet Message Format [26] for email states: "CR and LF MUST only occur together as CRLF; they MUST NOT appear independently in the body". Differences between SMTP implementations in how they treat bare LF and/or bare CR characters have led to SMTP spoofing attacks referred to as "SMTP smuggling". [27]

The File Transfer Protocol can automatically convert newlines in files being transferred between systems with different newline representations when the transfer is done in "ASCII mode". However, transferring binary files in this mode usually has disastrous results: any occurrence of the newline byte sequence—which does not have line terminator semantics in this context, but is just part of a normal sequence of bytes—will be translated to whatever newline representation the other system uses, effectively corrupting the file. FTP clients often employ some heuristics (for example, inspection of filename extensions) to automatically select either binary or ASCII mode, but in the end it is up to users to make sure their files are transferred in the correct mode. If there is any doubt as to the correct mode, binary mode should be used, as then no files will be altered by FTP, though they may display incorrectly. [28]

Conversion between newline formats

Text editors are often used for converting a text file between different newline formats; most modern editors can read and write files using at least the different ASCII CR/LF conventions.

For example, the editor Vim can make a file compatible with the Windows Notepad text editor. Within vim

 :setfileformat=dos  :wq

Editors can be unsuitable for converting larger files or bulk conversion of many files. For larger files (on Windows NT) the following command is often used:

D:\>TYPE unix_file | FIND /V ""> dos_file 

Special purpose programs to convert files between different newline conventions include unix2dos and dos2unix, mac2unix and unix2mac, mac2dos and dos2mac, and flip. [29] The tr command is available on virtually every Unix-like system and can be used to perform arbitrary replacement operations on single characters. A DOS/Windows text file can be converted to Unix format by simply removing all ASCII CR characters with

$ tr -d '\r' <inputfile>outputfile

or, if the text has only CR newlines, by converting all CR newlines to LF with

$ tr '\r' '\n' <inputfile>outputfile

The same tasks are sometimes performed with awk, sed, or in Perl if the platform has a Perl interpreter:

$ awk'{sub("$","\r\n"); printf("%s",$0);}'inputfile>outputfile# UNIX to DOS  (adding CRs on Linux and BSD based OS that haven't GNU extensions)$ awk'{gsub("\r",""); print;}'inputfile>outputfile# DOS to UNIX  (removing CRs on Linux and BSD based OS that haven't GNU extensions)$ sed-e's/$/\r/'inputfile>outputfile# UNIX to DOS  (adding CRs on Linux based OS that use GNU extensions)$ sed-e's/\r$//'inputfile>outputfile# DOS  to UNIX (removing CRs on Linux based OS that use GNU extensions)$ perl-pe's/\r?\n|\r/\r\n/g'inputfile>outputfile# Convert to DOS$ perl-pe's/\r?\n|\r/\n/g'inputfile>outputfile# Convert to UNIX$ perl-pe's/\r?\n|\r/\r/g'inputfile>outputfile# Convert to old Mac

The file command can identify the type of line endings:

 $ filemyfile.txt  myfile.txt: ASCII English text, with CRLF line terminators

The Unix egrep (extended grep) command can be used to print filenames of Unix or DOS files (assuming Unix and DOS-style files only, no classic Mac OS-style files):

$ egrep-L'\r\n'myfile.txt# show UNIX style file (LF terminated)$ egrep-l'\r\n'myfile.txt# show DOS style file (CRLF terminated)

Other tools permit the user to visualise the EOL characters:

$ od-amyfile.txt $ cat-emyfile.txt $ cat-vmyfile.txt $ hexdump-cmyfile.txt 

Interpretation

Two ways to view newlines, both of which are self-consistent, are that newlines either separate lines or that they terminate lines. If a newline is considered a separator, there will be no newline after the last line of a file. Some programs have problems processing the last line of a file if it is not terminated by a newline. On the other hand, programs that expect newline to be used as a separator will interpret a final newline as starting a new (empty) line. Conversely, if a newline is considered a terminator, all text lines including the last are expected to be terminated by a newline. If the final character sequence in a text file is not a newline, the final line of the file may be considered to be an improper or incomplete text line, or the file may be considered to be improperly truncated.

In text intended primarily to be read by humans using software which implements the word wrap feature, a newline character typically only needs to be stored if a line break is required independent of whether the next word would fit on the same line, such as between paragraphs and in vertical lists. Therefore, in the logic of word processing and most text editors, newline is used as a paragraph break and is known as a "hard return", in contrast to "soft returns" which are dynamically created to implement word wrapping and are changeable with each display instance. In many applications a separate control character called "manual line break" exists for forcing line breaks inside a single paragraph. The glyph for the control character for a hard return is usually a pilcrow (¶), and for the manual line break is usually a carriage return arrow (↵).

Reverse and partial line feeds

RI (U+008D REVERSE LINE FEED, [30] ISO/IEC 6429 8D, decimal 141) is used to move the printing position back one line (by reverse feeding the paper, or by moving a display cursor up one line) so that other characters may be printed over existing text. This may be done to make them bolder, or to add underlines, strike-throughs or other characters such as diacritics.

Similarly, PLD (U+008B PARTIAL LINE FORWARD, decimal 139) and PLU (U+008C PARTIAL LINE BACKWARD, decimal 140) can be used to advance or reverse the text printing position by some fraction of the vertical line spacing (typically, half). These can be used in combination for subscripts (by advancing and then reversing) and superscripts (by reversing and then advancing), and may also be useful for printing diacritics.

See also

Related Research Articles

<span class="mw-page-title-main">ASCII</span> American character encoding standard

ASCII, an acronym for American Standard Code for Information Interchange, is a character encoding standard for electronic communication. ASCII codes represent text in computers, telecommunications equipment, and other devices. ASCII has just 128 code points, of which only 95 are printable characters, which severely limit its scope. The set of available punctuation had significant impact on the syntax of computer languages and text markup. ASCII hugely influenced the design of character sets used by modern computers, including Unicode which has over a million code points, but the first 128 of these are the same as ASCII.

In computing and telecommunications, a control character or non-printing character (NPC) is a code point in a character set that does not represent a written character or symbol. They are used as in-band signaling to cause effects other than the addition of a symbol to the text. All other characters are mainly graphic characters, also known as printing characters, except perhaps for "space" characters. In the ASCII standard there are 33 control characters, such as code 7, BEL, which rings a terminal bell.

UTF-8 is a character encoding standard used for electronic communication. Defined by the Unicode Standard, the name is derived from Unicode Transformation Format – 8-bit. Almost every webpage is stored in UTF-8.

In telecommunications, an End-of-Transmission character (EOT) is a transmission control character. Its intended use is to indicate the conclusion of a transmission that may have included one or more texts and any associated message headings.

<span class="mw-page-title-main">Windows Notepad</span> Simple text editor included with Microsoft Windows

Windows Notepad is a simple text editor for Windows; it creates and edits plain text documents. First released in 1983 to commercialize the computer mouse in MS-DOS.

The backslash\ is a mark used mainly in computing and mathematics. It is the mirror image of the common slash /. It is a relatively recent mark, first documented in the 1930s. It is sometimes called a hack, whack, escape, reverse slash, slosh, downwhack, backslant, backwhack, bash, reverse slant, reverse solidus, and reversed virgule.

A text file is a kind of computer file that is structured as a sequence of lines of electronic text. A text file exists stored as data within a computer file system.

A carriage return, sometimes known as a cartridge return and often shortened to CR, <CR> or return, is a control character or mechanism used to reset a device's position to the beginning of a line of text. It is closely associated with the line feed and newline concepts, although it can be considered separately in its own right.

uuencoding is a form of binary-to-text encoding that originated in the Unix programs uuencode and uudecode written by Mary Ann Horton at the University of California, Berkeley in 1980, for encoding binary data for transmission in email systems.

<span class="mw-page-title-main">Comma-separated values</span> File format used to store data

Comma-separated values (CSV) is a text file format that uses commas to separate values, and newlines to separate records. A CSV file stores tabular data in plain text, where each line of the file typically represents one data record. Each record consists of the same number of fields, and these are separated by commas in the CSV file. If the field delimiter itself may appear within a field, fields can be surrounded with quotation marks.

tr (Unix) Unix text formatting utility

tr is a command in Unix, Plan 9, Inferno, and Unix-like operating systems. It is an abbreviation of translate or transliterate, indicating its operation of replacing or removing specific characters in its input data set.

Formats that use delimiter-separated values store two-dimensional arrays of data by separating the values in each row with specific delimiter characters. Most database and spreadsheet programs are able to read or save data in a delimited format. Due to their wide support, DSV files can be used in data exchange among many applications.

This article provides basic comparisons for notable text editors. More feature details for text editors are available from the Category of text editor features and from the individual products' articles. This article may not be up-to-date or necessarily all-inclusive.

Perl Compatible Regular Expressions (PCRE) is a library written in C, which implements a regular expression engine, inspired by the capabilities of the Perl programming language. Philip Hazel started writing PCRE in summer 1997. PCRE's syntax is much more powerful and flexible than either of the POSIX regular expression flavors and than that of many other regular-expression libraries.

The C0 and C1 control code or control character sets define control codes for use in text by computer systems that use ASCII and derivatives of ASCII. The codes represent additional information about the text, such as the position of a cursor, an instruction to start a new line, or a message that the text has been received.

A whitespace character is a character data element that represents white space when text is rendered for display by a computer.

In computer data, a substitute character (␚) is a control character that is used to pad transmitted data in order to send it in blocks of fixed size, or to stand in place of a character that is recognized to be invalid, erroneous or unrepresentable on a given device. It is also used as an escape sequence in some programming languages.

The delete control character is the last character in the ASCII repertoire, with the code 127. It is supposed to do nothing and was designed to erase incorrect characters on paper tape. It is denoted as ^? in caret notation and is U+007F in Unicode.

Many Unicode characters are used to control the interpretation or display of text, but these characters themselves have no visual or spatial representation. For example, the null character is used in C-programming application environments to indicate the end of a string of characters. In this way, these programs only require a single starting memory address for a string, since the string ends once the program reads the null character.

A batch file is a script file in DOS, OS/2 and Microsoft Windows. It consists of a series of commands to be executed by the command-line interpreter, stored in a plain text file. A batch file may contain any command the interpreter accepts interactively and use constructs that enable conditional branching and looping within the batch file, such as IF, FOR, and GOTO labels. The term "batch" is from batch processing, meaning "non-interactive execution", though a batch file might not process a batch of multiple data.

References

  1. "What is a Newline?". www.computerhope.com. Retrieved 10 May 2021.
  2. Qualline, Steve (2001). Vi Improved - Vim (PDF). Sams Publishing. p.  120. ISBN   9780735710016. Archived from the original (PDF) on 8 April 2022. Retrieved 4 January 2023.
  3. Duckett, Chris. "Windows Notepad finally understands everyone else's end of line characters". ZDNet. Archived from the original on 13 May 2018. Retrieved 4 January 2023. [A]fter decades of frustration, and having to download a real text editor to change a single line in a config file from a Linux box, Microsoft has updated Notepad to be able to handle end of line characters used in Unix, Linux, and macOS environments.
  4. Lopez, Michel (8 May 2018). "Introducing extended line endings support in Notepad". Windows Command Line. Archived from the original on 6 April 2019. Retrieved 4 January 2023. As with any change to a long-established tool, there's a chance that this new behavior may not work for your scenarios, or you may prefer to disable this new behavior and return to Notepad's original behavior. To do this, you can change [...registry keys...] to tweak how Notepad handles pasting of text, and which EOL character to use when Enter/Return is hit
  5. Kahn-Greene, Will Guaraldi. "ASCII chart". bluesock.org.
  6. Bray, Andrew C.; Dickens, Adrian C.; Holmes, Mark A. (1983). The Advanced User Guide for the BBC Microcomputer (PDF). Cambridge Microcomputer Centre. pp. 103, 104. ISBN   978-0946827008 . Retrieved 30 January 2019.
  7. "Character Output". RISC OS 3 Programmers' Reference Manual. 3QD Developments Ltd. 3 November 2015. Retrieved 18 July 2018.
  8. IBM System/360 Reference Data Card, Publication GX20-1703, IBM Data Processing Division, White Plains, NY
  9. Heninger, Andy (20 September 2013). "UAX #14: Unicode Line Breaking Algorithm". The Unicode Consortium.
  10. "C1 Control Character Set of ISO 6429" (PDF). ITSCJ. IPSJ. 1 October 1983. Retrieved 3 March 2022.
  11. Control Functions for Coded Character Sets (PDF) (Report). ECMA International. June 1991.
  12. Character Code Structure and Extension Techniques (PDF) (Report) (6th ed.). ECMA International. December 1994.
  13. "ECMAScript 2019 Language Specification". ECMA International. June 2019. 11.3 Line Terminators.
  14. "ECMAScript 2019 Language Specification". ECMA International. June 2019. 11.2 White Space.
  15. Bray, Tim (March 2014). "Strings". The JavaScript Object Notation (JSON) Data Interchange Format. sec. 7. doi: 10.17487/RFC7159 . RFC 7159.
  16. "Subsume JSON (a.k.a. JSON ⊂ ECMAScript)". GitHub. 22 May 2018.
  17. "ECMAScript 2019 Language Specification". ECMA International. June 2019. 11.8.4 String Literals.
  18. "ECMAScript 2018 Language Specification". ECMA International. June 2018. 11.8.4 String Literals.
  19. "5.4. Line Break Characters". YAML Ain't Markup Language revision 1.2.2. 1 October 2021.
  20. "binmode". Perl documentation. Perl 5 Porters.
  21. "PHP: Strings - Manual". PHP Manual. The PHP Group.
  22. "2. Lexical analysis". The Python Language Reference. The Python Foundation.
  23. "What's new in Python 2.3". Python Software Foundation.
  24. "PHP: Predefined Constants - Manual". PHP Manual. The PHP Group.
  25. Bernstein, D. J. "Bare LFs in SMTP".
  26. Resnick, Pete (April 2001). Internet Message Format. doi: 10.17487/RFC2822 . RFC 2822.
  27. Longin, Timo (18 December 2023). "SMTP Smuggling - Spoofing E-Mails Worldwide". SEC Consult.
  28. Zeil, Steven (19 January 2015). "File Transfer". Old Dominion University. Archived from the original on 14 May 2016. When in doubt, transfer in binary mode.
  29. Sapp, Craig Stuart. "ASCII text converstion between UNIX, Macintosh, MS-DOS". Center for Computer Research in Music and Acoustics. Archived from the original on 9 February 2009.
  30. "C1 Controls and Latin-1 Supplement" (PDF). unicode.org. Retrieved 13 February 2016.