C0 and C1 control codes

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.

C0 codes are the range 00HEX1FHEX and the default C0 set was originally defined in ISO 646 (ASCII). C1 codes are the range 80HEX9FHEX and the default C1 set was originally defined in ECMA-48 (harmonized later with ISO 6429). The ISO/IEC 2022 system of specifying control and graphic characters allows other C0 and C1 sets to be available for specialized applications, but they are rarely used.

C0 controls

ASCII defined 32 control characters, plus a necessary extra one for the all-1 DEL character (needed to punch out all the holes on a paper tape and erase it).

This large number of codes was desirable at the time, as multi-byte controls would require implementation of a state machine in the terminal, which was very difficult with contemporary electronics and mechanical terminals. Since then, only a few of the original controls have maintained their use: the "whitespace" range of BS, TAB, LF, VT, FF, and CR; the BEL code; and ESC (but, except in ISO-2022-JP, almost always as part of an ESC,'[' CSI representation starting an ANSI escape sequence). Others are unused or have acquired different meanings such as NUL being the C string terminator.

Some serial transmission protocols such as ANPA-1312, Kermit, and XMODEM do make extensive use of control characters SOH, STX, ETX, EOT, ACK, NAK and SYN for purposes approximating their original definitions.

Basic ASCII control codes

These are the standard ASCII control codes, originally defined in ANSI X3.4. If using the ISO/IEC 2022 extension mechanism, they are designated as the active C0 control character set with the octet sequence 0x1B 0x21 0x40 (ESC ! @).[1]

Seq Dec Hex Acronym Symbol Name C Description
^@0000NULNull\0 Originally used to allow gaps to be left on paper tape for edits. Later used for padding after a code that might take a terminal some time to process (e.g. a carriage return or line feed on a printing terminal). Now often used as a string terminator, especially in the programming language C.
^A0101SOHStart of Heading In message transmission, delimits the start of a message header. The format of this header may be defined by an applicable protocol, such as IPTC 7901 for journalistic text transmission, and it is usually terminated by STX.[2] In Hadoop, it is often used as a field separator.
^B0202STXStart of Text First character of message text, and may be used to terminate the message heading.
^C0303ETXEnd of Text In message transmission, delimits the end of the main text of a message. Might be followed by "post-text information" (i.e. a structured footer) defined by an applicable protocol[2] or by any additional texts,[3] followed by EOT.[2][3] In keyboard input, often used as a "break" character (Ctrl-C) to interrupt or terminate a program or process.
^D0404EOTEnd of Transmission Delimits the end of a transmitted message, which may include a header, message text and post-text footer,[2] or even multiple texts and associated headings.[3] May also be used to place terminals on standby.[3] Often used on Unix to indicate end-of-file on a terminal.
^E0505ENQEnquiry Signal intended to trigger a response at the receiving end, to see if it is still present.
^F0606ACKAcknowledge Response to an ENQ, or an indication of successful receipt of a message.
^G0707BEL[lower-alpha 1]Bell, Alert\a Originally used to sound a bell on the terminal. Later used for a beep on systems that didn't have a physical bell. May also quickly turn on and off inverse video (a visual bell).
^H0808BSBackspace\b Move the cursor one position leftwards. On input, this may delete the character to the left of the cursor. On output, where in early computer technology a character once printed could not be erased, the backspace was sometimes used to generate accented characters in ASCII. For example, à could be produced using the three character sequence a BS ` (or, using the characters’ hex values, 0x61 0x08 0x60). This usage is now generally not supported (it is prohibited in, for instance, ISO/IEC 8859).[9] To provide disambiguation between the two potential uses of backspace, the cancel character control code was made part of the standard C1 control set.
^I0909HTCharacter Tabulation, Horizontal Tabulation\t Position to the next character tab stop.
^J100ALFLine Feed\n On typewriters, printers, and some terminal emulators, moves the cursor down one row without affecting its column position. On Unix, used to mark end-of-line. In DOS, Windows, and various network standards, LF is used following CR as part of the end-of-line mark.
^K110BVTLine Tabulation, Vertical Tabulation\v Position the form at the next line tab stop.
^L120CFFForm Feed\f On printers, load the next page. Treated as whitespace in many programming languages, and may be used to separate logical divisions in code. In some terminal emulators, it clears the screen. It still appears in some common plain text files as a page break character, such as the RFCs published by IETF.
^M130DCRCarriage Return\r Originally used to move the cursor to column zero while staying on the same line. On classic Mac OS (pre-Mac OS X), as well as in earlier systems such as the Apple II and Commodore 64, used to mark end-of-line. In DOS, Windows, and various network standards, it is used preceding LF as part of the end-of-line mark. The Enter or Return key on a keyboard will send this character, but it may be converted to a different end-of-line sequence by a terminal program.
^N140ESOShift Out Switch to an alternative character set.
^O150FSIShift In Return to regular character set after Shift Out.
^P1610DLEData Link Escape Cause the following octets to be interpreted as raw data, not as control codes or graphic characters. Returning to normal usage would be implementation dependent.

^Q1711DC1Device Control One (XON) These four control codes are reserved for device control, with the interpretation dependent upon the device to which they were connected. DC1 and DC2 were intended primarily to indicate activating a device while DC3 and DC4 were intended primarily to indicate pausing or turning off a device. DC1 and DC3 (known also as XON and XOFF respectively in this usage) originated as the "start and stop remote paper-tape-reader" functions in ASCII Telex networks. This teleprinter usage became the de facto standard for software flow control.[10]
^R1812DC2Device Control Two
^S1913DC3Device Control Three (XOFF)
^T2014DC4Device Control Four
^U2115NAKNegative Acknowledge Sent by a station as a negative response to the station with which the connection has been set up. In binary synchronous communication protocol, the NAK is used to indicate that an error was detected in the previously received block and that the receiver is ready to accept retransmission of that block. In multipoint systems, the NAK is used as the not-ready reply to a poll.
^V2216SYNSynchronous Idle Used in synchronous transmission systems to provide a signal from which synchronous correction may be achieved between data terminal equipment, particularly when no other character is being transmitted.
^W2317ETBEnd of Transmission Block Indicates the end of a transmission block of data when data are divided into such blocks for transmission purposes.

If it is not in use for another purpose, IPTC 7901 recommends interpreting ETB as an end of paragraph character.[2]

^X2418CANCancel Indicates that the data preceding it are in error or are to be disregarded.
^Y2519EMEnd of medium Intended as means of indicating on paper or magnetic tapes that the end of the usable portion of the tape had been reached. It might also mark the end of the used portion of the medium, and does not necessarily correspond to the physical end of medium.[1]

If it is not in use for another purpose, IPTC 7901 recommends repurposing EM as an em space for indenting the first line of a paragraph[2] (see also EMSP).

^Z261ASUBSubstitute Originally intended for use as a transmission control character to indicate that garbled or invalid characters had been received. It has often been put to use for other purposes when the in-band signaling of errors it provides is unneeded, especially where robust methods of error detection and correction are used, or where errors are expected to be rare enough to make using the character for other purposes advisable. In DOS, Windows and other CP/M derivatives, it is used to indicate the end of file, both when typing on the terminal, and sometimes in text files stored on disk.
^[271BESCEscape\e[lower-alpha 2] The Esc key on the keyboard will cause this character to be sent on most systems. It can be used in software user interfaces to exit from a screen, menu, or mode, or in device-control protocols (e.g., printers and terminals) to signal that what follows is a special command sequence rather than normal text. In systems based on ISO/IEC 2022, even if another set of C0 control codes are used, this octet is required to always represent the escape character.

^\281CFSFile Separator Can be used as delimiters to mark fields of data structures. If used for hierarchical levels, US is the lowest level (dividing plain-text data items), while RS, GS, and FS are of increasing level to divide groups made up of items of the level beneath it.

The Unix info format uses US, followed by an optional form-feed and a line break, to mark the beginning of a node.[11]

MARC 21 uses US as a subfield delimiter, RS as a field terminator and GS as a record terminator.[12]

In the current edition of IPTC 7901, if they are not used for other purposes, US is recommended for use as a column separator in tables, FS as a "Central Field Separator" in tables, and GS and RS respectively for marking a following space or hyphen-minus as non-breaking or soft respectively (in character sets not supplying explicit NBSP and SHY characters).[2]

^]291DGSGroup Separator
^^301ERSRecord Separator
^_311FUSUnit Separator
While not technically part of the C0 control character range, the following two characters are defined in ISO/IEC 2022 as always being available regardless of which sets of control characters and graphics characters have been registered. They can be thought of as having some characteristics of control characters.
 3220SPSpace Space is a graphic character. It has a visual representation consisting of the absence of a graphic symbol. It causes the active position to be advanced by one character position. In some applications, Space can be considered a lowest-level "word separator" to be used with the adjacent separator characters.
^?1277FDELDelete Not technically part of the C0 control character range, this was originally used to mark deleted characters on paper tape, since any character could be changed to all ones by punching holes everywhere. On VT100 compatible terminals, this is the character generated by the key labelled ⌫, usually called backspace on modern machines, and does not correspond to the PC delete key.

Category-Number names

Several of the basic ASCII control codes are classified into a few categories, and sometimes given alternative abbreviated names consisting of that category and a number:[1]

  • Transmission controls:[1] TC1 (SOH), TC2 (STX), TC3 (ETX), TC4 (EOT), TC5 (ENQ), TC6 (ACK), TC7 (DLE), TC8 (NAK), TC9 (SYN), TC10 (ETB).
  • Format effectors:[1] FE0 (BS), FE1 (HT), FE2 (LF), FE3 (VT), FE4 (FF), FE5 (CR).
  • Device controls:[1] DC1, DC2, DC3, DC4.
  • Information separators:[1] IS1 (US), IS2 (RS), IS3 (GS), IS4 (FS).
  • Locking shifts:[13] LS0 (SI), LS1 (SO).
  • Others: NUL, BEL, CAN, EM, SUB, ESC.

ISO/IEC 2022 (ECMA-35) refers to the C0 locking shifts as LS0 and LS1 in 8-bit environments, and as SI and SO in 7-bit environments.[13]

The first, 1963 edition of ASCII classified DLE as a device control, rather than a transmission control, and gave it the abbreviation DC0 ("device control reserved for data link escape").[14]

Format effector codes affect how graphical characters are laid out and rendered, as opposed to controlling other functions of hardware devices or having other side effects. The C0 format effectors are permitted in ISO/IEC 6429 DCS, OSC, PM and APC sequences.

The information separators and C0 format effectors (minus BS) are the only C0 control codes with semantics defined by the Unicode Standard, the interpretation of the remainder of the C0 controls being left to higher-level protocols.[15]

ISO/IEC 2022 (ECMA-35) requires that if C0 control code sets include the ten ASCII transmission control codes, they must be encoded at their ASCII locations.[16] It also prohibits those ten transmission controls from being included in a C1 control code set,[17] and prohibits transmission controls besides those ten from being included in a C0 control set.[16]

Modified C0 control code sets

Although C0 control code sets usually preserve most of the ASCII control codes unchanged, a number are registered which replace certain control functions with alternatives:

Seq Dec Hex Replaced In code set(s) Acronym Name Description
^I0909HTNATS,[18] IPTC[19]FOFormatting Used in tabular data to move to the next tabulation position (retaining "Tab" semantics in this regard), and in standard formats to denote the next phase. The current IPTC specification instead recommends using regular ASCII C0 controls, and using the US control as a column break in tables.[2]
^K110BVTNATS,[18] IPTC[19]ECDEnd of Instruction Delimits the end of a typographical instruction intended for the typesetting device.
^L120CFFNATS,[18] IPTC[19]SCDStart of Instruction Delimits the start of a typographical instruction intended for the typesetting device.
^M130DCRNATS,[18] IPTC[19]QLQuad Left Terminates a line, indicating that it should be left-aligned. The current IPTC specification instead recommends using regular ASCII C0 controls, and representing this function with the < CR LF sequence.[2]
^N140ESONATS[18]URUpper Rail Starts an emphasised region of text. Used in Scandinavian journalistic text transmission as of 1975;[18] IPTC recommendations as of 1976 used FT2 and FT3 instead (see below).[19] The current IPTC specification instead recommends using regular ASCII C0 controls, and marking up this function with the ^ character.[2]
^O150FSINATS[18]LRLower Rail Ends an emphasised region of text. Used in Scandinavian journalistic text transmission as of 1975;[18] IPTC recommendations as of 1976 used FT1 instead (see below).[19] The current IPTC specification instead recommends using regular ASCII C0 controls, and marking up this function with the @ character.[2]
^Q1711DC1IPTC[19]FT1Font One Switches to regular typeface, i.e. disables bold or italic.
^R1812DC2IPTC[19]FT2Font Two Switches to italic typeface.
^S1913DC3IPTC[19]FT3Font Three Switches to bold typeface.
^X2418CANNATS,[18] IPTC[19]KWKill Word Deletes the preceding word (deletes back to and including the last space, or back to and excluding the previous line break, whichever it encounters first). Retains "Cancel" semantics in this respect, but has a more specific function.
^Y2519EMT.61/T.51,[20] Standalone[21]SS2Single Shift Two Non-locking shift code for G2; a C0 representation allowing it to be represented with one byte in a 7-bit environment.
^\281CFSNATS,[18] IPTC,[19] Standalone[22]SS/SS2Super Shift or Single Shift Two Non-locking shift code.
JIS C 6225[23]CEXControl Extension Introduces a control sequence as specified by the now-withdrawn JIS C 6225. These included sequences for controlling vertical text behaviour, superscripts and subscripts.[24]
^]291DGSNATS,[18] IPTC[19]QCQuad Centre Terminates a line, indicating that it should be centred.
T.61/T.51[20]SS3Single Shift Three Non-locking shift code for G3; a C0 representation allowing it to be represented with one byte in a 7-bit environment.
^^301ERSNATS,[18] IPTC[19]QRQuad Right Terminates a line, indicating that it should be right-aligned.
^_311FUSNATS,[18] IPTC[19]JYJustify Terminates a line which is to be justified.

C1 controls

In parallel to the development of the 1972 edition of ISO 646, which revised the standard to introduce the concept of national versions of the code in addition to the US-originated ASCII, work was also underway with the purpose of defining extension mechanisms for ASCII, applicable to both 7-bit and 8-bit environments, which would be published as ECMA-35 and ISO 2022.[25]

These mechanisms were designed so that any conformant 8-bit code could be converted to a corresponding 7-bit code, and vice versa.[26] In a 7-bit environment, the Shift Out (SO) control would change the meaning of the 94 bytes 0x21 through 0x7E (i.e. the graphical codes, excluding the space) to invoke characters from an alternative set, and the Shift In (SI) control would change them back.[27] In an 8-bit environment, instead of using shift codes, the eighth bit was set on a byte referencing the additional graphic character set. This meant that bytes 0xA1 through 0xFE were used for the additional graphic characters. The C0 control characters, being unaffected by the shift state of a 7-bit code, were to always be represented in an 8-bit code with the eighth bit unset.[26] The consequently otherwise-unused bytes in the range 0x80 through 0x9F could be used for additional control codes, which would instead be represented as 0x1B 0x40 through 0x1B 0x5F (ESC @ through ESC _) in a 7-bit code.[26] These additional control codes become known as the C1 control codes. To retain compatibility with the 7-bit representation, the behaviour of bytes 0xA0 and 0xFF was originally left undefined.[28]

The first C1 control code set to be registered for use with ISO 2022 was DIN 31626,[29] a specialised set for bibliographic use which was registered in 1979.[30] The general-use ISO/IEC 6429 set was registered in 1983,[31] although the ECMA-48 specification upon which it was based had been first published in 1976.[32]

Further editions of the standards altered the provisions to an extent. For instance, a further revision to ECMA-35 and ISO 2022 in 1985 introduced the concept of a 96-code graphical character set.[33] In an 8-bit code, this allowed the entire range from 0xA0 to 0xFF to be used for graphical characters. Use of 96-code sets also meant that the meaning of the bytes 0x20 and 0x7F in the corresponding 7-bit code could differ from "Space" and "Delete", unless the code was in the Shift In state.[34] Using 96-code sets for the G0 (Shift In) set was not made possible.[33]

It was this 8-bit code structure, with the bytes with the eighth bit set being divided between a range of C1 control codes and a 96-code set of graphical characters, which was used as the basis for ISO 8859.

C1 control codes for general use

These are the most common extended control codes, and are defined in ISO/IEC 6429, ECMA-48 and JIS X 0211. If using the ISO/IEC 2022 extension mechanism, they are designated as the active C1 control character set with the sequence 0x1B 0x22 0x43 (ESC " C).[31] Although Unicode does not require a particular C1 control code set, leaving their interpretation to be specified by higher-level protocols, and only specifies a behaviour for U+0085, it suggests interpreting C1 control codes as specified in ISO/IEC 6429 in the absence of use for other purposes.[15] Also listed in the table below are three control codes listed alongside the ISO/IEC 6429 codes in RFC 1345, but not actually defined by ISO/IEC 6429 (PAD, HOP and SGCI).[5][35]

Except for NEL (and SS2 and SS3 in EUC-JP), the 8-bit forms of these codes are almost never used. CSI, DCS and OSC are used to control text terminals and terminal emulators, but almost always by using their 7-bit escape code representations. Their ISO/IEC 2022 compliant single-byte representations are invalid in UTF-8, and the UTF-8 encodings of their corresponding codepoints are two bytes long like their escape code forms (for instance, CSI at U+009B is encoded as the bytes 0xC2, 0x9B in UTF-8), so there is no advantage to using them rather than the equivalent two-byte escape sequence. When these codes appear in modern documents, web pages, e-mail messages, etc., they are usually intended to be printing characters at that position in a proprietary encoding such as Windows-1252 or Mac OS Roman that use the C1 codes to provide additional graphic characters.

The official English language names of some C1 codes were revised in the most recent edition of the standard for control codes in general (ISO 6429:1992 or ECMA-48:1991) to be neutral with respect to the graphic characters used with them, and to not assume that, as in the Latin script, lines are written on a page from top to bottom and that characters are written on a line from left to right. The abbreviations used were not changed, as the standard had already specified that those would remain unchanged when the standard is translated to other languages. Where the name has been changed, the original name from which the abbreviation was derived is also given in parenthesis in the tables below.

Esc+DecHexAcroNameDescription[36]
@12880PADPadding CharacterNot part of ISO/IEC 6429 (ECMA-48). In early drafts of ISO 10646, was used as part of a proposed mechanism to encode non-ASCII characters. This use was removed in later drafts.[5][35] Is nonetheless used by the internal-use two-byte fixed-length form of the ISO-2022-based Extended Unix Code (EUC) for left-padding single byte characters in code sets 1 and 3, whereas NUL serves the same function for code sets 0 and 2. This is not done in the usual "packed" EUC format.[37]
A12981HOPHigh Octet PresetNot part of ISO/IEC 6429 (ECMA-48). In early drafts of ISO 10646, was intended as a means of introducing a sequence of ISO 2022 compliant multiple byte characters with the same first byte without repeating said first byte, thus reducing length; this behaviour was never part of a standard or published implementation. Its name was nonetheless retained as a RFC 1345 standard code-point name.[5][35]
B13082BPHBreak Permitted HereFollows a graphic character where a line break is permitted. Roughly equivalent to a soft hyphen except that the means for indicating a line break is not necessarily a hyphen. Not part of the first edition of ISO/IEC 6429.[31] See also zero-width space.
C13183NBHNo Break HereFollows the graphic character that is not to be broken. Not part of the first edition of ISO/IEC 6429.[31] See also word joiner.
D13284INDIndexMove the active position one line down, to eliminate ambiguity about the meaning of LF. Deprecated in 1988 and withdrawn in 1992 from ISO/IEC 6429 (1986 and 1991 respectively for ECMA-48).
E13385NELNext LineEquivalent to CR+LF. Used to mark end-of-line on some IBM mainframes.
F13486SSAStart of Selected AreaUsed by block-oriented terminals.
G13587ESAEnd of Selected Area
H13688HTSCharacter Tabulation Set
Horizontal Tabulation Set
Causes a character tabulation stop to be set at the active position.
I13789HTJCharacter Tabulation With Justification
Horizontal Tabulation With Justification
Similar to Character Tabulation, except that instead of spaces or lines being placed after the preceding characters until the next tab stop is reached, the spaces or lines are placed preceding the active field so that preceding graphic character is placed just before the next tab stop.
J1388AVTSLine Tabulation Set
Vertical Tabulation Set
Causes a line tabulation stop to be set at the active position.
K1398BPLDPartial Line Forward
Partial Line Down
Used to produce subscripts and superscripts in ISO/IEC 6429, e.g., in a printer.
Subscripts use PLD text PLU while superscripts use PLU text PLD.
L1408CPLUPartial Line Backward
Partial Line Up
M1418DRIReverse Line Feed
Reverse Index
N1428ESS2Single-Shift 2Next character invokes a graphic character from the G2 or G3 graphic sets respectively. In systems that conform to ISO/IEC 4873 (ECMA-43), even if a C1 set other than the default is used, these two octets may only be used for this purpose.
O1438FSS3Single-Shift 3
P14490DCSDevice Control StringFollowed by a string of printable characters (0x20 through 0x7E) and format effectors (0x08 through 0x0D), terminated by ST (0x9C). This may be used by variable-length control sequences for text terminals and terminal emulators, such as terminfo queries.[38]
Q14591PU1Private Use 1Reserved for a function without standardized meaning for private use as required, subject to the prior agreement of the sender and the recipient of the data.
R14692PU2Private Use 2
S14793STSSet Transmit State
T14894CCHCancel characterDestructive backspace, intended to eliminate ambiguity about meaning of BS.
U14995MWMessage Waiting
V15096SPAStart of Protected AreaUsed by block-oriented terminals.
W15197EPAEnd of Protected Area
X15298SOSStart of StringFollowed by a control string terminated by ST (0x9C) which, in contrast to those initiated by DCS, OSC, PM or APC, may contain any character except SOS or ST. Not part of the first edition of ISO/IEC 6429.[31]

MARC 21 uses SOS and ST in Unicode-format records to mark up a string which should be ignored for collation purposes, while MARC-8 format records use NSB and NSE for the same purpose.[12][39]

Y15399SGCISingle Graphic Character IntroducerNot part of ISO/IEC 6429. In early drafts of ISO 10646, was used to encode a single multiple-byte character without switching out of a HOP mode. In later drafts, this facility was removed, the name was nonetheless retained as a RFC 1345 standard code-point name.[5][35]
Z1549ASCISingle Character IntroducerTo be followed by a single printable character (0x20 through 0x7E) or format effector (0x08 through 0x0D). The intent was to provide a means by which a control function or a graphic character that would be available regardless of which graphic or control sets were in use could be defined. Definitions of what the following byte would invoke was never implemented in an international standard. Not part of the first edition of ISO/IEC 6429.[31]
[1559BCSIControl Sequence IntroducerUsed to introduce control sequences that take parameters.
\1569CSTString TerminatorTerminates a variable-length control string initiated by DCS, SOS, OSC, PM or APC.
]1579DOSCOperating System CommandFollowed by a string of printable characters (0x20 through 0x7E) and format effectors (0x08 through 0x0D), terminated by ST (0x9C). These three control codes were intended for use to allow in-band signaling of protocol information, but are rarely used for that purpose.

Some terminal emulators, including xterm, support OSC sequences for setting the window title and reconfiguring the available colour palette. They may also support terminating an OSC sequence with BEL as a non-standard alternative to the standard ST.[40]

^1589EPMPrivacy Message
_1599FAPCApplication Program Command

C1 control codes for bibliographic use

The following alternative C1 control code set is defined for bibliographic applications such as library systems. It is mostly concerned with string collation, and with markup of bibliographic fields. Slightly different variants are defined in the German standard DIN 31626[30] and the ISO standard ISO 6630.[41][42] Where these differ is noted in the table below where applicable. MARC-8 uses the coding of NSB and NSE from this set, and adds some additional format effectors in locations not used by the ISO version; however, MARC 21 uses this control set only in MARC-8 records, not in Unicode-format records.[12]

If using the ISO/IEC 2022 extension mechanism, the DIN version is designated as the active C1 control character set with the sequence 0x1B 0x22 0x45 (ESC " E),[30] and the ISO version is designated with the sequence 0x1B 0x22 0x42 (ESC " B).[41] The 1985 edition of the ISO version can also be explicitly specified by using the sequence 0x1B 0x26 0x40 0x1B 0x22 0x42 (ESC & @ ESC " B).[42]

Esc+DecHexAcroNameDescription[30][41][42]
@…F128…13480…86-(reserved)
G13587CUSClose-Up for Sorting(DIN, ISO) Declares that two successive character sequences separated by a space or separator should be treated as one word for collation purposes.
H13688NSBNon-Sorting Characters Begin(DIN, ISO, MARC) Marks the start of a sequence of characters to be ignored for collation purposes. MARC 21 uses this character in MARC-8 records, but uses 0x98 (SOS) in Unicode records for the same purpose.[12][39]
I13789NSENon-Sorting Characters End(DIN, ISO, MARC) Marks the end of a sequence of characters to be ignored for collation purposes. MARC 21 uses this character in MARC-8 records, but uses 0x9C (ST) in Unicode records for the same purpose.[12][39]
J1388AFILFiller Character(DIN) Substitutes for a mandatory alphanumeric character in a field.
K1398BTCITag in Context Indicator(DIN) Within a bibliographic field, used to refer to data in another bibliographic field by its tag number.
PLDPartial Line Down(ISO) Not in the original edition of ISO 6630.[41] In the 1985 edition of ISO 6630,[42] used for Partial Line Down (see PLD above).
L1408CICIIdentification Number in Context Indicator(DIN) Within a bibliographic field, used to refer to data in another bibliographic record by its ID number.
PLUPartial Line Up(ISO) Not in original edition of ISO 6630.[41] In the 1985 edition of ISO 6630,[42] used for Partial Line Up (see PLU above).
M1418DOSC[lower-alpha 3]Optional Syllabification[lower-alpha 4] Control(DIN) Marks a syllable boundary in a long word. See also soft hyphen.
ZWJJoiner(MARC) In MARC-8, used for the Zero-Width Joiner, while U+200D is used in Unicode-format MARC records.[12][39]
N1428ESS2Single-Shift 2(DIN) Non-locking shift code, see SS2 above.
ZWNJNon-Joiner(MARC) In MARC-8, used for the Zero-Width Non-Joiner, while U+200C is used in Unicode-format MARC records.[12][39]
O1438FSS3Single-Shift 3(DIN) Non-locking shift code, see SS3 above.
P14490-(reserved)
Q14591EABEmbedded Annotation Beginning(DIN, ISO) Marks the start of a variable-length annotation which is embedded within a bibliographic field, as opposed to separated using content designation.
R14692EAEEmbedded Annotation End(DIN, ISO) Marks the end of a variable-length embedded annotation.
S14793ISBItem Specification Beginning(DIN) Marks the start of a string of specific information of some description, other than a keyword or a permutation string.
T14894ISEItem Specification End(DIN) Marks the end of a string of specific information.
U14995SIBSorting Interpolation Beginning(ISO) Marks the beginning of a sequence of characters used for collation purposes only.
V15096SIESorting Interpolation End(ISO) Marks the end of a sequence of characters used for collation purposes only.
W15197SSBSecondary Sorting Value Beginning(ISO) Marks the start of a string with subordinate collation value.
X15298SSESecondary Sorting Value End(ISO) Marks the end of a string with subordinate collation value.
Y15399INCIndicator for Non-Standard Character(DIN) Identifies a following non-standard character.
Z1549A-(reserved)
[1559B-(reserved)
\1569CKWBKeyword Beginning(DIN, ISO) Marks the start of a keyword within a bibliographic field.
]1579DKWEKeyword End(DIN, ISO) Marks the end of a keyword within a bibliographic field.
^1589EPSBPermutation String Beginning(DIN, ISO) Marks the start of a string which is to be permuted to the front of the element. Terminated by PSE or by the end of the element.
_1599FPSEPermutation String End(DIN, ISO) Marks the end of a string which is to be permuted to the front of the element.

Other C1 control code sets

EBCDIC defines 16 additional control codes, besides those present in ASCII. When mapped to Unicode or to ISO 8859, these codes are mapped to C1 control characters in a manner specified by IBM's Character Data Representation Architecture (CDRA).[43][44] Although the default mapping of the New Line (NL) control does correspond to the ISO/IEC 6429 NEL (0x85; although its mapping is sometimes swapped with LF, following UNIX line ending convention),[43] the remainder of the control codes do not correspond to ISO/IEC 6429. Even when they have the same behaviour, such as SPS and PLU, the C1-mapped representations of the EBCDIC controls (e.g. 0x8D for SPS) do not correspond to the ISO/IEC 6429 codes (e.g. 0x8C for PLU). Extended-ASCII-mapped EBCDIC can therefore be regarded as having its own C1 set, although it is not registered with the ISO-IR registry for use with ISO/IEC 2022.[29]

Various specialised C1 control code sets are registered for use by various Videotex formats.[29]

Unicode

Unicode sets aside 65 code points in the general category "Cc" (Control) for compatibility with ISO/IEC 2022. The Unicode control characters cover U+0000U+001F (C0 controls), U+007F (delete), and U+0080U+009F (C1 controls). Unicode only specifies semantics for U+001CU+001F, U+0009U+000D, and U+0085. The rest of the control characters are transparent to Unicode and their meanings are left to higher-level protocols.[15]

Unicode has no category "Cc" code points allocated other than the C0 and C1 ones. However, it does include additional format effector characters besides those in the C0 and C1 control sets, such as marks, embeds, isolates and pops for explicit bidirectional formatting, and the zero-width joiner and non-joiner for controlling ligature use. These are given the general category "Cf" (Format) rather than "Cc".

gollark: Anyway, you get to fix whatever you wrecked.
gollark: It's more of a misconfiguration combined with poorly written code.
gollark: Well, I didn't mean to crash anything.
gollark: Building them is just a hassle.
gollark: I know the designs well enough.

See also

Footnotes

  1. The name BELL is assigned by Unicode to the unrelated emoji character 🔔 (U+1F514). While C0 and C1 control characters were not formally named by the Unicode standard itself at the time, this collided with existing use of BELL as the name of this control character in software following the previous versions of UTS#18 (the Unicode Regular Expressions standard),[4] e.g. in Perl.[5] Unicode now accepts ALERT and BEL (but not BELL) as formal aliases for the control character,[6] although the code chart still lists BELL as the ISO 6429 alias,[7] and the corresponding control picture code point is called SYMBOL FOR BELL. Perl subsequently switched to using BELL for the emoji in version 5.18.[8]
  2. The '\e' escape sequence is not part of ISO C and many other language specifications. However, it is understood by several compilers, including GCC.
  3. Not the same as the Operating System Command (OSC) in the ISO/IEC 6429 C1 code set.
  4. Spelled "Syllabication [sic]" in the ISO-IR-040 document, along with "syllable" being spelled "syllabe [sic]" in the description. These are presumably typographical errors.

References

  1. ISO/TC 97/SC 2 (1975). The set of control characters of the ISO 646 (PDF). ITSCJ/IPSJ. ISO-IR-1.
  2. IPTC (1995). The IPTC Recommended Message Format (PDF) (5th ed.). IPTC TEC 7901.
  3. "end-of-transmission character (EOT)". Federal Standard 1037C. 1996.
  4. Williamson, Karl. "Re: PRI #202: Extensions to NameAliases.txt for Unicode 6.1.0".
  5. Ken Whistler (July 20, 2011). "Formal Name Aliases for Control Characters, L2/11-281". Unicode Consortium.
  6. "Name Aliases". Unicode Consortium.
  7. "C0 Controls and Basic Latin" (PDF). Unicode Consortium.
  8. "charnames". Perl Programming Documentation.
  9. ISO/IEC JTC 1/SC 2 (1998-02-12). Final Text of DIS 8859-10, Information Technology — 8-bit single-byte coded graphic character sets — Part 10: Latin alphabet No. 6 (PDF). ISO/IEC FDIS 8859-10:1998, JTC1/SC2 N2992, WG3 N415.
  10. "What is the point of Ctrl-S?". Unix and Linux Stack exchange. Retrieved 14 February 2019.
  11. Fox, Brian. "Adding a new node to Info". Info: The online, menu-driven GNU documentation system. GNU Project.
  12. "Control function codes". MARC 21 Specifications for Record Structure, Character Sets, and Exchange Media. Library of Congress. 2007-12-04.
  13. ECMA (1994). "7.3: Invocation of character-set code elements". Character Code Structure and Extension Techniques (PDF) (ECMA Standard) (6th ed.). p. 14. ECMA-35.
  14. American Standards Association (1963). American Standard Code for Information Interchange: 4. Legend. p. 6. ASA X3.4-1963.
  15. Unicode Consortium (2019). "23.1: Control Codes" (PDF). The Unicode Standard (12.0.0 ed.). pp. 868–870. ISBN 978-1-936213-22-1.
  16. ECMA (1994). "6.4.2: Primary sets of coded control functions". Character Code Structure and Extension Techniques (PDF) (ECMA Standard) (6th ed.). p. 11. ECMA-35.
  17. ECMA (1994). "6.4.3: Supplementary sets of coded control functions". Character Code Structure and Extension Techniques (PDF) (ECMA Standard) (6th ed.). p. 11. ECMA-35.
  18. Sveriges Standardiseringskommission (1975). NATS Control set for newspaper text transmission (PDF). ITSCJ/IPSJ. ISO-IR-7.
  19. IPTC (1976). Control set for newspaper text transmission (PDF). ITSCJ/IPSJ. ISO-IR-26.
  20. ITU (1985). Teletex Primary Set of Control Functions (PDF). ITSCJ/IPSJ. ISO-IR-106.
  21. Úřad pro normalizaci a měřeni (1987). The set of control characters of ISO 646, with EM replaced by SS2 (PDF). ITSCJ/IPSJ. ISO-IR-140.
  22. ISO/TC 97/SC 2 (1977). The set of control characters of ISO 646, with IS4 replaced by Single Shift for G2 (SS2) (PDF). ITSCJ/IPSJ. ISO-IR-36.
  23. ISO/TC 97/SC 2 (1982). The C0 set of Control Characters of Japanese Standard JIS C 6225-1979 (PDF). ITSCJ/IPSJ. ISO-IR-74.
  24. Printronix (2012). OKI® Programmer’s Reference Manual (PDF). p. 26.
  25. ECMA/TC 1 (1973). "Brief History". 7-bit Input/Output Coded Character Set (PDF) (4th ed.). ECMA. ECMA-6:1973.
  26. ECMA/TC 1 (1971). "8.2: Correspondence between the 7-bit Code and an 8-bit Code". Extension of the 7-bit Coded Character Set (PDF) (1st ed.). ECMA. pp. 21–24. ECMA-35:1971.
  27. ECMA/TC 1 (1973). "4.2: Specific Control Characters". 7-bit Input/Output Coded Character Set (PDF) (4th ed.). ECMA. p. 16. ECMA-6:1973.
  28. ECMA/TC 1 (1974). "5: Notes on Table 1". 8-bit Coded Character Set (PDF) (1st ed.). ECMA. pp. 4–5. ECMA-43:1974.
  29. ISO/IEC International Register of Coded Character Sets To Be Used With Escape Sequences (PDF), ITSCJ/IPSJ, ISO-IR
  30. DIN (1979-07-15). Additional Control Codes for Bibliographic Use according to German Standard DIN 31626 (PDF). ITSCJ/IPSJ. ISO-IR-40.
  31. ISO/TC97/SC2 (1983-10-01). C1 Control Set of ISO 6429:1983 (PDF). ITSCJ/IPSJ. ISO-IR-77.
  32. ECMA/TC 1 (1979). "Brief History". Additional Control Functions for Character-Imaging I/O Devices (PDF) (2nd ed.). ECMA. ECMA-48:1979.
  33. ECMA/TC 1 (1985). "5.3.8: Sets of 96 graphic characters". Code Extension Techniques (PDF) (4th ed.). ECMA. pp. 17–18. ECMA-35:1985.
  34. ECMA/TC 1 (1985). "5.2.1: Use of locking-shift functions". Code Extension Techniques (PDF) (4th ed.). ECMA. pp. 9–10. ECMA-35:1985.
  35. Ken Whistler (2015-10-05). "Why Nothing Ever Goes Away". Unicode Mailing List.
  36. ECMA (1991). Control Functions for Coded Character Sets. Standard ECMA-48.
  37. Lunde, Ken (2008). CJKV Information Processing: Chinese, Japanese, Korean, and Vietnamese Computing. O'Reilly. p. 244. ISBN 9780596800925.
  38. Moy, Edward; Gildea, Stephen; Dickey, Thomas. "Device-Control functions". XTerm Control Sequences.
  39. "Code Table Extended Latin (ANSEL)". MARC 21 Specifications for Record Structure, Character Sets, and Exchange Media. Library of Congress. 2007-12-05.
  40. Moy, Edward; Gildea, Stephen; Dickey, Thomas. "Operating System Commands". XTerm Control Sequences.
  41. ISO/TC 46 (1983-06-01). Additional Control Codes for Bibliographic Use according to International Standard ISO 6630 (PDF). ITSCJ/IPSJ. ISO-IR-67.
  42. ISO/TC 46 (1986-02-01). Additional Control Codes for Bibliographic Use according to International Standard ISO 6630 (PDF). ITSCJ/IPSJ. ISO-IR-124.
  43. Umamaheswaran, V.S. (1999-11-08). "3.3 Step 2: Byte Conversion". UTF-EBCDIC. Unicode Consortium. Unicode Technical Report #16. The 64 control characters […], the ASCII DELETE character (U+007F)[…] are mapped respecting EBCDIC conventions, as defined in IBM Character Data Representation Architecture, CDRA, with one exception -- the pairing of EBCDIC Line Feed and New Line control characters are swapped from their CDRA default pairings to ISO/IEC 6429 Line Feed (U+000A) and Next Line (U+0085) control characters
  44. Steele, Shawn (1996-04-24). cp037_IBMUSCanada to Unicode table. Microsoft/Unicode Consortium.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.