Jump to content

ИСО/МЭК 2022

(Перенаправлено из ISO 4873 )

ИСО 2022
Язык(и) Различный.
Стандартный
Классификация с сохранением состояния Система кодировок (с предварительно настроенными подмножествами без сохранения состояния)
Преобразует/кодирует US-ASCII и, в зависимости от реализации:
Преемник ISO/IEC 10646 ( Юникод )
Другая связанная кодировка(и) Stateful subsets:
Pre-configured versions:

ISO/IEC 2022 Информационные технологии. Структура кода символов и методы расширения — это стандарт ISO / IEC в области кодирования символов . Он эквивалентен ECMA стандарту ECMA-35 . [1] [2] ANSI стандарт ANSI X3.41 [3] и японский промышленный стандарт JIS X 0202 . Созданный в 1971 году, последний раз он был пересмотрен в 1994 году. [4]

ISO 2022 определяет общую структуру, которой могут соответствовать кодировки символов, выделяя определенные диапазоны байтов ( 0x 00–1F и 0x7F–9F), которые будут использоваться для непечатаемых управляющих кодов. [5] для форматирования и внутриполосных инструкций (таких как разрывы строк или инструкции форматирования для текстовых терминалов ), а не для графических символов . Он также определяет синтаксис escape-последовательностей, многобайтовых последовательностей, начинающихся с Код управления ESC , который также можно использовать для внутриполосных инструкций. [6] Конкретные наборы управляющих кодов и escape-последовательностей, разработанные для использования с ISO 2022, включают ISO/IEC 6429 , части которого реализованы с помощью ANSI.SYS и эмуляторов терминала .

ISO 2022 itself also defines particular control codes and escape sequences which can be used for switching between different coded character sets (for example, between ASCII and the Japanese JIS X 0208) so as to use multiple in a single document,[7] effectively combining them into a single stateful encoding (a feature less important since the advent of Unicode). It is designed to be usable in both 8-bit environments and 7-bit environments (those where only seven bits are usable in a byte, such as e-mail without 8BITMIME).[8]

Encodings and conformance

[edit]

The ASCII character set supports the ISO Basic Latin alphabet (equivalent to the English alphabet), and does not provide good support for languages which use additional letters, or which use a different writing system altogether. Other writing systems with relatively few characters, such as Greek, Cyrillic, Arabic or Hebrew, as well as forms of the Latin script using diacritics or letters absent from the ISO Basic Latin alphabet, have historically been represented on personal computers with different 8-bit, single byte, extended ASCII encodings, which follow ASCII when the most significant bit is 0 (i.e. bytes 0x00–7F, when represented in hexadecimal), and include additional characters for a most significant bit of 1 (i.e. bytes 0x80–FF). Some of these, such as the ISO 8859 series, conform to ISO 2022,[9][10] while others such as DOS code page 437 do not, usually due to not reserving the bytes 0x80–9F for control codes.

Certain East Asian languages, specifically Chinese, Japanese, and Korean (collectively "CJK"), are written using far more characters than the maximum of 256 which can be represented in a single byte, and were first represented on computers with language-specific double-byte encodings or variable-width encodings; some of these (such as the Simplified Chinese encoding GB 2312) conform to ISO 2022, while others (such as the Traditional Chinese encoding Big5) do not. Control codes in ISO 2022 are always represented with a single byte, regardless of the number of bytes used for graphical characters. CJK encodings used in 7-bit environments which use ISO 2022 mechanisms to switch between character sets are often given names starting with "ISO-2022-", most notably ISO-2022-JP, although some other CJK encodings such as EUC-JP also make use of ISO 2022 mechanisms.[11][12]

Since the first 256 code points of Unicode were taken from ISO 8859-1, Unicode inherits the concept of C0 and C1 control codes from ISO 2022, although it adds other non-printing characters besides the ISO 2022 control codes. However, Unicode transformation formats such as UTF-8 generally deviate from the ISO 2022 structure in various ways, including:

  • Using 8-bit bytes, but not representing the C1 codes in their single-byte forms specified in ISO 2022 (most UTFs, one exception being the obsolete UTF-1)
  • Representing all characters, including control codes, with multiple bytes (e.g. UTF-16, UTF-32)
  • Mixing bytes with the most significant bit set and unset within the coded representation for a single code point (e.g. UTF-1, GB 18030)

ISO 2022 escape sequences do, however, exist for switching to and from UTF-8 as a "coding system different from that of ISO 2022",[13] which are supported by certain terminal emulators such as xterm.[14]

Overview

[edit]

Elements

[edit]

ISO/IEC 2022 specifies the following:

  • An infrastructure of multiple character sets with particular structures which may be included in a single character encoding system, including multiple graphical character sets and multiple sets of both primary (C0) and secondary (C1) control codes,[15]
  • A format for encoding these sets, assuming that 8 bits are available per byte,[16]
  • A format for encoding these sets in the same encoding system when only 7 bits are available per byte,[17] and a method for transforming any conformant character data to pass through such a 7-bit environment,[8]
  • The general structure of ANSI escape codes,[6] and
  • Specific escape code formats for identifying individual character sets,[7] for announcing the use of particular encoding features or subsets,[18] and for interacting with or switching to other encoding systems.[18]

Code versions

[edit]

A specific implementation does not have to implement all of the standard; the conformance level and the supported character sets are defined by the implementation. Although many of the mechanisms defined by the ISO/IEC 2022 standard are infrequently used, several established encodings are based on a subset of the ISO/IEC 2022 system.[19] In particular, 7-bit encoding systems using ISO/IEC 2022 mechanisms include ISO-2022-JP (or JIS encoding), which has primarily been used in Japanese-language e-mail. 8-bit encoding systems conforming to ISO/IEC 2022 include ISO/IEC 4873 (ECMA-43), which is in turn conformed to by ISO/IEC 8859,[9][10] and Extended Unix Code, which is used for East Asian languages.[11] More specialised applications of ISO 2022 include the MARC-8 encoding system used in MARC 21 library records.[3]

Designation escape sequences

[edit]

The escape sequences for switching to particular character sets or encodings are registered with the ISO-IR registry (except for those set apart for private use, the meanings of which are defined by vendors, or by protocol specifications such as ARIB STD-B24) and follow the patterns defined within the standard. Character encodings making use of these escape sequences require data to be processed sequentially in a forward direction, since the correct interpretation of the data depends on previously encountered escape sequences.

Specific profiles such as ISO-2022-JP may impose extra conditions, such as that the current character set is reset to US-ASCII before the end of a line. Furthermore, the escape sequences declaring the national character sets may be absent if a specific ISO-2022-based encoding permits or requires this, and dictates that particular national character sets are to be used. For example, ISO-8859-1 states that no defining escape sequence is needed.

Multi-byte characters

[edit]

To represent large character sets, ISO/IEC 2022 builds on ISO/IEC 646's property that a seven-bit character representation will normally be able to represent 94 graphic (printable) characters (in addition to space and 33 control characters); if only the C0 control codes (narrowly defined) are excluded, this can be expanded to 96 characters. Using two bytes, it is thus possible to represent up to 8,836 (94×94) characters; and, using three bytes, up to 830,584 (94×94×94) characters. Though the standard defines it, no registered character set uses three bytes (although EUC-TW's unregistered G2 does, as does the similarly unregistered CCCII).

For the two-byte character sets, the code point of each character is normally specified in so-called row-cell or kuten[a] form, which comprises two numbers between 1 and 94 inclusive, specifying a row[b] and cell[c] of that character within the zone. For a three-byte set, an additional plane[d] number is included at the beginning.[20] The escape sequences do not only declare which character set is being used, but also whether the set is single-byte or multi-byte (although not how many bytes it uses if it is multi-byte), and also whether each byte has 94 or 96 permitted values.

Code structure

[edit]

Notation and nomenclature

[edit]

ISO/IEC 2022 coding specifies a two-layer mapping between character codes and displayed characters. Escape sequences allow any of a large registry of graphic character sets to be "designated"[21] into one of four working sets, named G0 through G3, and shorter control sequences specify the working set that is "invoked"[22] to interpret bytes in the stream.

Encoding byte values ("bit combinations") are often given in column-line notation, where two decimal numbers in the range 00–15 (each corresponding to a single hexadecimal digit) are separated by a slash.[23] Hence, for instance, codes 2/0 (0x20) through 2/15 (0x2F) inclusive may be referred to as "column 02". This is the notation used in the ISO/IEC 2022 / ECMA-35 standard itself.[24] They may be described elsewhere using hexadecimal, as is often used in this article, or using the corresponding ASCII characters,[25] although the escape sequences are actually defined in terms of byte values, and the graphic assigned to that byte value may be altered without affecting the control sequence.

Byte values from the 7-bit ASCII graphic range (hexadecimal 0x20–0x7F), being on the left side of a character code table, are referred to as "GL" codes (with "GL" standing for "graphics left") while bytes from the "high ASCII" range (0xA0–0xFF), if available (i.e. in an 8-bit environment), are referred to as the "GR" codes ("graphics right").[5] The terms "CL" (0x00–0x1F) and "CR" (0x80–0x9F) are defined for the control ranges, but the CL range always invokes the primary (C0) controls, whereas the CR range always either invokes the secondary (C1) controls or is unused.[5]

Fixed coded characters

[edit]

The delete character DEL (0x7F), the escape character ESC (0x1B) and the space character SP (0x20) are designated "fixed" coded characters[26] and are always available when G0 is invoked over GL, irrespective of what character sets are designated. They may not be included in graphical character sets, although other sizes or types of whitespace character may be.[27]

General syntax of escape sequences

[edit]

Sequences using the ESC (escape) character take the form ESC [I...] F, where the ESC character is followed by zero or more intermediate bytes[28] (I) from the range 0x20–0x2F, and one final byte[29] (F) from the range 0x30–0x7E.[30]

The first I byte, or absence thereof, determines the type of escape sequence; it might, for instance, designate a working set, or denote a single control function. In all types of escape sequences, F bytes in the range 0x30–0x3F are reserved for unregistered private uses defined by prior agreement between parties.[31]

Control functions from some sets may make use of further bytes following the escape sequence proper. For example, the ISO 6429 control function "Control Sequence Introducer", which can be represented using an escape sequence, is followed by zero or more bytes in the range 0x30–0x3F, then zero or more bytes in the range 0x20–0x2F, then by a single byte in the range 0x40–0x7E, the entire sequence being called a "control sequence".[32]

Graphical character sets

[edit]

Each of the four working sets G0 through G3 may be a 94-character set or a 94n-character multi-byte set. Additionally, G1 through G3 may be a 96- or 96n-character set.

In a 96- or 96n-character set, the bytes 0x20 through 0x7F when GL-invoked, or 0xA0 through 0xFF when GR-invoked, are allocated to and may be used by the set. In a 94- or 94n-character set, the bytes 0x20 and 0x7F are not used.[33] When a 96- or 96n-character set is invoked in the GL region, the space and delete characters (codes 0x20 and 0x7F) are not available until a 94- or 94n-character set (such as the G0 set) is invoked in GL.[5] 96-character sets cannot be designated to G0.

Registration of a set as a 96-character set does not necessarily mean that the 0x20/A0 and 0x7F/FF bytes are actually assigned by the set; some examples of graphical character sets which are registered as 96-sets but do not use those bytes include the G1 set of I.S. 434,[34] the box drawing set from ISO/IEC 10367,[35] and ISO-IR-164 (a subset of the G1 set of ISO-8859-8 with only the letters, used by CCITT).[36]

Combining characters

[edit]

Characters are expected to be spacing characters, not combining characters, unless specified otherwise by the graphical set in question.[37] ISO 2022 / ECMA-35 also recognizes the use of the backspace and carriage return control characters as means of combining otherwise spacing characters, as well as the CSI sequence "Graphic Character Combination" (GCC)[37] (CSI 0x20 (SP) 0x5F (_)).[38]

Use of the backspace and carriage return in this manner is permitted by ISO/IEC 646 but prohibited by ISO/IEC 4873 / ECMA-43[39] and by ISO/IEC 8859,[40][41] on the basis that it leaves the graphical character repertoire undefined. ISO/IEC 4873 / ECMA-43 does, however, permit the use of the GCC function provided that the sequence of characters is kept the same and merely displayed in one space, rather than being over-stamped to form a character with a different meaning.[42]

Control character sets

[edit]

Control character sets are classified as "primary" or "secondary" control code sets,[43] respectively also called "C0" and "C1" control code sets.[44]

A C0 control set must contain the ESC (escape) control character at 0x1B[45] (a C0 set containing only ESC is registered as ISO-IR-104),[46] whereas a C1 control set may not contain the escape control whatsoever.[33] Hence, they are entirely separate registrations, with a C0 set being only a C0 set and a C1 set being only a C1 set.[44]

If codes from the C0 set of ISO 6429 / ECMA-48, i.e. the ASCII control codes, appear in the C0 set, they are required to appear at their ISO 6429 / ECMA-48 locations.[45] Inclusion of transmission control characters in the C0 set, besides the ten included by ISO 6429 / ECMA-48 (namely SOH, STX, ETX, EOT, ENQ, ACK, DLE, NAK, SYN and ETB),[47] or inclusion of any of those ten in the C1 set, is also prohibited by the ISO/IEC 2022 / ECMA-35 standard.[45][33]

A C0 control set is invoked over the CL range 0x00 through 0x1F,[48] whereas a C1 control function may be invoked over the CR range 0x80 through 0x9F (in an 8-bit environment) or by using escape sequences (in a 7-bit or 8-bit environment),[43] but not both. Which style of C1 invocation is used must be specified in the definition of the code version.[49] For example, ISO/IEC 4873 specifies CR bytes for the C1 controls which it uses (SS2 and SS3).[50] If necessary, which invocation is used may be communicated using announcer sequences.

In the latter case, single control functions from the C1 control code set are invoked using "type Fe" escape sequences,[33] meaning those where the ESC control character is followed by a byte from columns 04 or 05 (that is to say, ESC 0x40 (@) through ESC 0x5F (_)).[51]

Other control functions

[edit]

Additional control functions are assigned to "type Fs" escape sequences (in the range ESC 0x60 (`) through ESC 0x7E (~)); these have permanently assigned meanings rather than depending on the C0 or C1 designations.[51][52] Registration of control functions to type "Fs" sequences must be approved by ISO/IEC JTC 1/SC 2.[52] Other single control functions may be registered to type "3Ft" escape sequences (in the range ESC 0x23 (#) [I...] 0x40 (@) through ESC 0x23 (#) [I...] 0x7E (~)),[53] although no "3Ft" sequences are currently assigned (as of 2019).[54] Some of these are specified in ECMA-35 (ISO 2022 / ANSI X3.41), others in ECMA-48 (ISO 6429 / ANSI X3.64).[55] ECMA-48 refers to these as "independent control functions".[56]

CodeHexAbbr.NameEffect[54]
ESC `1B 60DMIDisable manual inputDisables some or all of the manual input facilities of the device.
ESC a1B 61INTInterruptInterrupts the current process.
ESC b1B 62EMIEnable manual inputEnables the manual input facilities of the device.
ESC c1B 63RISReset to initial stateResets the device to its state after being powered on.[57]
ESC d1B 64CMDCoding method delimiterUsed when interacting with an outer coding / representation system, see below.
ESC n1B 6ELS2Locking shift twoShift function, see below.
ESC o1B 6FLS3Locking shift threeShift function, see below.
ESC |1B 7CLS3RLocking shift three rightShift function, see below.
ESC }1B 7DLS2RLocking shift two rightShift function, see below.
ESC ~1B 7ELS1RLocking shift one rightShift function, see below.

Escape sequences of type "Fp" (ESC 0x30 (0) through ESC 0x3F (?)) or of type "3Fp" (ESC 0x23 (#) [I...] 0x30 (0) through ESC 0x23 (#) [I...] 0x3F (?)) are reserved for single private use control codes, by prior agreement between parties.[58] Several such sequences of both types are used by DEC terminals such as the VT100, and are thus supported by terminal emulators.[14]

Shift functions

[edit]

By default, GL codes specify G0 characters and GR codes (where available) specify G1 characters; this may be otherwise specified by prior agreement. The set invoked over each area may also be modified with control codes referred to as shifts, as shown in the table below.[59]

An 8-bit code may have GR codes specifying G1 characters, i.e. with its corresponding 7-bit code using Shift In and Shift Out to switch between the sets (e.g. JIS X 0201),[60] although some instead have GR codes specifying G2 characters, with the corresponding 7-bit code using a single-shift code to access the second set (e.g. T.51).[61]

The codes shown in the table below are the most common encodings of these control codes, conforming to ISO/IEC 6429. The LS2, LS3, LS1R, LS2R and LS3R shifts are registered as single control functions and are always encoded as the escape sequences listed below,[54] whereas the others are part of a C0 or C1 control code set (as shown below, SI (LS0) and SO (LS1) are C0 controls and SS2 and SS3 are C1 controls), meaning that their coding and availability may vary depending on which control sets are designated: they must be present in the designated control sets if their functionality is used.[48][49] The C1 controls themselves, as mentioned above, may be represented using escape sequences or 8-bit bytes, but not both.

Alternative encodings of the single-shifts as C0 control codes are available in certain control code sets. For example, SS2 and SS3 are usually available at 0x19 and 0x1D respectively in T.51[61] and T.61.[62] This coding is currently recommended by ISO/IEC 2022 / ECMA-35 for applications requiring 7-bit single-byte representations of SS2 and SS3,[63] and may also be used for SS2 only,[64] although older code sets with SS2 at 0x1C also exist,[65][66][67] and were mentioned as such in an earlier edition of the standard.[68] The 0x8E and 0x8F coding of the single shifts as shown below is mandatory for ISO/IEC 4873 levels 2 and 3.[69]

CodeHexAbbr.NameEffect
SI0FSI
LS0
Shift In
Locking shift zero
GL encodes G0 from now on[70][71]
SO0ESO
LS1
Shift Out
Locking shift one
GL encodes G1 from now on[70][71]
ESC n1B 6ELS2Locking shift twoGL encodes G2 from now on[70][71]
ESC o1B 6FLS3Locking shift threeGL encodes G3 from now on[70][71]
CR area: SS2
Escape code: ESC N
CR area: 8E
Escape code: 1B 4E
SS2Single shift twoGL or GR (see below) encodes G2 for the immediately following character only[72]
CR area: SS3
Escape code: ESC O
CR area: 8F
Escape code: 1B 4F
SS3Single shift threeGL or GR (see below) encodes G3 for the immediately following character only[72]
ESC ~1B 7ELS1RLocking shift one rightGR encodes G1 from now on[73]
ESC }1B 7DLS2RLocking shift two rightGR encodes G2 from now on[73]
ESC |1B 7CLS3RLocking shift three rightGR encodes G3 from now on[73]

Although officially considered shift codes and named accordingly, single-shift codes are not always viewed as shifts,[12] and they may simply be viewed as prefix bytes (i.e. the first bytes in a multi-byte sequence),[11] since they do not require the encoder to keep the currently active set as state, unlike locking shift codes. In 8-bit environments, either GL or GR, but not both, may be used as the single-shift area. This must be specified in the definition of the code version.[72] For instance, ISO/IEC 4873 specifies GL, whereas packed EUC specifies GR. In 7-bit environments, only GL is used as the single-shift area.[74][75] If necessary, which single-shift area is used may be communicated using announcer sequences.

The names "locking shift zero" (LS0) and "locking shift one" (LS1) refer to the same pair of C0 control characters (0x0F and 0x0E) as the names "shift in" (SI) and "shift out" (SO). However, the standard refers to them as LS0 and LS1 when they are used in 8-bit environments and as SI and SO when they are used in 7-bit environments.[59]

The ISO/IEC 2022 / ECMA-35 standard permits, but discourages, invoking G1, G2 or G3 in both GL and GR simultaneously.[76]

Registration of graphical and control code sets

[edit]

The ISO International register of coded character sets to be used with escape sequences (ISO-IR) lists graphical character sets, control code sets, single control codes and so forth which have been registered for use with ISO/IEC 2022. The procedure for registering codes and sets with the ISO-IR registry is specified by ISO/IEC 2375. Each registration receives a unique escape sequence, and a unique registry entry number to identify it.[77][78] For example, the CCITT character set for Simplified Chinese is known as ISO-IR-165.

Registration of coded character sets with the ISO-IR registry identifies the documents specifying the character set or control function associated with an ISO/IEC 2022 non‑private-use escape sequence. This may be a standard document; however, registration does not create a new ISO standard, does not commit the ISO or IEC to adopt it as an international standard, and does not commit the ISO or IEC to add any of its characters to the Universal Coded Character Set.[79]

ISO-IR registered escape sequences are also used encapsulated in a Formal Public Identifier to identify character sets used for numeric character references in SGML (ISO 8879). For example, the string ISO 646-1983//CHARSET International Reference Version (IRV)//ESC 2/5 4/0 can be used to identify the International Reference Version of ISO 646-1983,[80] and the HTML 4.01 specification uses ISO Registration Number 177//CHARSET ISO/IEC 10646-1:1993 UCS-4 with implementation level 3//ESC 2/5 2/15 4/6 to identify Unicode.[81] The textual representation of the escape sequence, included in the third element of the FPI, will be recognised by SGML implementations for supported character sets.[80]

Character set designations

[edit]

Escape sequences to designate character sets take the form ESC I [I...] F. As mentioned above, the intermediate (I) bytes are from the range 0x20–0x2F, and the final (F) byte is from the range 0x30–0x7E. The first I byte (or, for a multi-byte set, the first two) identifies the type of character set and the working set it is to be designated to, whereas the F byte (and any additional I bytes) identify the character set itself, as assigned in the ISO-IR register (or, for the private-use escape sequences, by prior agreement).

Additional I bytes may be added before the F byte to extend the F byte range. This is currently only used with 94-character sets, where codes of the form ESC ( ! F have been assigned.[82] At the other extreme, no multibyte 96-sets have been registered, so the sequences below are strictly theoretical.

As with other escape sequence types, the range 0x30–0x3F is reserved for private-use F bytes,[31] in this case for private-use character set definitions (which might include unregistered sets defined by protocols such as ARIB STD-B24[83] or MARC-8,[3] or vendor-specific sets such as DEC Special Graphics).[84] However, in a graphical set designation sequence, if the second I byte (for a single-byte set) or the third I byte (for a double-byte set) is 0x20 (space), the set denoted is a "dynamically redefinable character set" (DRCS) defined by prior agreement,[85] which is also considered private use.[31] A graphical set being considered a DRCS implies that it represents a font of exact glyphs, rather than a set of abstract characters.[86] The manner in which DRCS sets and associated fonts are transmitted, allocated and managed is not stipulated by ISO/IEC 2022 / ECMA-35 itself, although it recommends allocating them sequentially starting with F byte 0x40 (@);[87] however, a manner for transmitting DRCS fonts is defined within some telecommunication protocols such as World System Teletext.[88]

There are also three special cases for multi-byte codes. The code sequences ESC $ @, ESC $ A, and ESC $ B were all registered when the contemporary version of the standard allowed multi-byte sets only in G0, so must be accepted in place of the sequences ESC $ ( @ through ESC $ ( B to designate to the G0 character set.[89]

There are additional (rarely used) features for switching control character sets, but this is a single-level lookup, in that (as noted above) the C0 set is always invoked over CL, and the C1 set is always invoked over CR or by using escape codes. As noted above, it is required that any C0 character set include the ESC character at position 0x1B, so that further changes are possible. The control set designation sequences (as opposed to the graphical set ones) may also be used from within ISO/IEC 10646 (UCS/Unicode), in contexts where processing ANSI escape codes is appropriate, provided that each byte in the sequence is padded to the code unit size of the encoding.[90]

A table of escape sequence I bytes and the designation or other function which they perform is below.[91]

CodeHexAbbr.NameEffectExample
ESC SP F1B 20 FACSAnnounce code structureSpecifies code features used, e.g. working sets (see below).[92]ESC SP L
(ISO 4873 level 1)
ESC ! F1B 21 FCZDC0-designateF selects a C0 control character set to be used.[93]ESC ! @
(ASCII C0 codes)
ESC " F1B 22 FC1DC1-designateF selects a C1 control character set to be used.[94]ESC " C
(ISO 6429 C1 codes)
ESC # F1B 23 F-(Single control function)(Reserved for sequences for control functions, see above.)ESC # 6
(private use: DEC Double Width Line)[95]
  • ESC $ F[e]
  • ESC $ ( F
  • 1B 24 F[e]
  • 1B 24 28 F
GZDM4G0-designate multibyte 94-setF selects a 94n-character set to be used for G0.[89]ESC $ ( C
(KS X 1001 in G0)
ESC $ ) F1B 24 29 FG1DM4G1-designate multibyte 94-setF selects a 94n-character set to be used for G1.[89]ESC $ ) A
(GB 2312 in G1)
ESC $ * F1B 24 2A FG2DM4G2-designate multibyte 94-setF selects a 94n-character set to be used for G2.[89]ESC $ * B
(JIS X 0208 in G2)
ESC $ + F1B 24 2B FG3DM4G3-designate multibyte 94-setF selects a 94n-character set to be used for G3.[89]ESC $ + D
(JIS X 0212 in G3)
ESC $ , F1B 24 2C F-(not used)(not used)[f]-
ESC $ - F1B 24 2D FG1DM6G1-designate multibyte 96-setF selects a 96n-character set to be used for G1.[89]ESC $ - 1
(private use)
ESC $ . F1B 24 2E FG2DM6G2-designate multibyte 96-setF selects a 96n-character set to be used for G2.[89]ESC $ . 2
(private use)
ESC $ / F1B 24 2F FG3DM6G3-designate multibyte 96-setF selects a 96n-character set to be used for G3.[89]ESC $ / 3
(private use)
ESC % F1B 25 FDOCSDesignate other coding systemSwitches coding system, see below.ESC % G
(UTF-8)
ESC & F1B 26 FIRRIdentify revised registrationPrefixes designation escape to denote revision.[g]ESC & @ ESC $ B
(JIS X 0208:1990 in G0)
ESC ' F1B 27 F-(not used)(not used)-
ESC ( F1B 28 FGZD4G0-designate 94-setF selects a 94-character set to be used for G0.[89]ESC ( B
(ASCII in G0)
ESC ) F1B 29 FG1D4G1-designate 94-setF selects a 94-character set to be used for G1.[89]ESC ) I
(JIS X 0201 Kana in G1)
ESC * F1B 2A FG2D4G2-designate 94-setF selects a 94-character set to be used for G2.[89]ESC * v
(ITU T.61 RHS in G2)
ESC + F1B 2B FG3D4G3-designate 94-setF selects a 94-character set to be used for G3.[89]ESC + D
(NATS-SEFI-ADD in G3)
ESC , F1B 2C F-(not used)(not used)[h]-
ESC - F1B 2D FG1D6G1-designate 96-setF selects a 96-character set to be used for G1.[89]ESC - A
(ISO 8859-1 RHS in G1)
ESC . F1B 2E FG2D6G2-designate 96-setF selects a 96-character set to be used for G2.[89]ESC . B
(ISO 8859-2 RHS in G2)
ESC / F1B 2F FG3D6G3-designate 96-setF selects a 96-character set to be used for G3.[89]ESC / b
(ISO 8859-15 RHS in G3)

Note that the registry of F bytes is independent for the different types. The 94-character graphic set designated by ESC ( A through ESC + A is not related in any way to the 96-character set designated by ESC - A through ESC / A. And neither of those is related to the 94n-character set designated by ESC $ ( A through ESC $ + A, and so on; the final bytes must be interpreted in context. (Indeed, without any intermediate bytes, ESC A is a way of specifying the C1 control code 0x81.)

Also note that C0 and C1 control character sets are independent; the C0 control character set designated by ESC ! A (which happens to be the NATS control set for newspaper text transmission) is not the same as the C1 control character set designated by ESC " A (the CCITT attribute control set for Videotex).

Interaction with other coding systems

[edit]

The standard also defines a way to specify coding systems that do not follow its own structure.

A sequence is also defined for returning to ISO/IEC 2022; the registrations which support this sequence as encoded in ISO/IEC 2022 comprise (as of 2019) various Videotex formats, UTF-8, and UTF-1.[99] A second I byte of 0x2F (/) is included in the designation sequences of codes which do not use that byte sequence to return to ISO 2022; they may have their own means to return to ISO 2022 (such as a different or padded sequence) or none at all.[100] All existing registrations of the latter type (as of 2019) are either transparent raw data, Unicode/UCS formats, or subsets thereof.[101]

CodeHexAbbr.NameEffect
ESC % @1B 25 40DOCSDesignate other coding system ("standard return")Return to ISO/IEC 2022 from another encoding.[100]
ESC % F1B 25 FDesignate other coding system ("with standard return")[99]F selects an 8-bit code; use ESC % @ to return.[100]
ESC % / F1B 25 2F FDesignate other coding system ("without standard return")[101]F selects an 8-bit code; there is no standard way to return.[100]
ESC d1B 64CMDCoding method delimiterDenotes the end of an ISO/IEC 2022 coded sequence.[102]

Of particular interest are the sequences which switch to ISO/IEC 10646 (Unicode) formats which do not follow the ISO/IEC 2022 structure. These include UTF-8 (which does not reserve the range 0x80–0x9F for control characters), its predecessor UTF-1 (which mixes GR and GL bytes in multi-byte codes), and UTF-16 and UTF-32 (which use wider coding units).[99][101]

Several codes were also registered for subsets (levels 1 and 2) of UTF-8, UTF-16 and UTF-32, as well as for three levels of UCS-2.[101] However, the only codes currently specified by ISO/IEC 10646 are the level-3 codes for UTF-8, UTF-16 and UTF-32 and the unspecified-level code for UTF-8, with the rest being listed as deprecated.[103] ISO/IEC 10646 stipulates that the big-endian formats of UTF-16 and UTF-32 are designated by their escape sequences.[104]

Unicode FormatCode(s)Hex[103]Deprecated codesDeprecated hex[99][101][103]
UTF-1(UTF-1 not in current ISO/IEC 10646.)ESC % B1B 25 42
UTF-8ESC % G,
ESC % / I
1B 25 47,[13]
1B 25 2F 49[105]
ESC % / G,
ESC % / H
1B 25 2F 47,
1B 25 2F 48
UTF-16ESC % / L1B 25 2F 4C[106]ESC % / @,
ESC % / C,
ESC % / E,
ESC % / J,
ESC % / K
1B 25 2F 40,
1B 25 2F 43,
1B 25 2F 45,
1B 25 2F 4A,
1B 25 2F 4B
UTF-32ESC % / F1B 25 2F 46ESC % / A,
ESC % / D
1B 25 2F 41,
1B 25 2F 44

Of the sequences switching to UTF-8, ESC % G is the one supported by, for example, xterm.[14]

Although use of a variant of the standard return sequence from UTF-16 and UTF-32 is permitted, the bytes of the escape sequence must be padded to the size of the code unit of the encoding (i.e. 001B 0025 0040 for UTF-16), i.e. the coding of the standard return sequence does not conform exactly to ISO/IEC 2022. For this reason, the designations for UTF-16 and UTF-32 use a without-standard-return syntax.[107]

For specifying encodings by labels, the X Consortium's Compound Text format defines five private-use DOCS sequences.[108]

Code structure announcements

[edit]

The sequence "announce code structure" (ESC SP (0x20) F) is used to announce a specific code structure, or a specific group of ISO 2022 facilities which are used in a particular code version. Although announcements can be combined, certain contradictory combinations (specifically, using locking shift announcements 16–23 with announcements 1, 3 and 4) are prohibited by the standard, as is using additional announcements on top of ISO/IEC 4873 level announcements 12–14[92] (which fully specify the permissible structural features). Announcement sequences are as follows:

NumberCodeHexCode version feature announced[92]
1ESC SP A1B 20 41G0 in GL, GR absent or unused, no locking shifts.
2ESC SP B1B 20 42G0 and G1 invoked to GL by locking shifts, GR absent or unused.
3ESC SP C1B 20 43G0 in GL, G1 in GR, no locking shifts, requires an 8-bit environment.
4ESC SP D1B 20 44G0 in GL, G1 in GR if 8-bit, no locking shifts unless in a 7-bit environment.
5ESC SP E1B 20 45Shift functions preserved during 7-bit/8-bit conversion.
6ESC SP F1B 20 46C1 controls using escape sequences.
7ESC SP G1B 20 47C1 controls in CR region in 8-bit environments, as escape sequences otherwise.
8ESC SP H1B 20 4894-character graphical sets only.
9ESC SP I1B 20 4994-character and/or 96-character graphical sets.
10ESC SP J1B 20 4AUses a 7-bit code, even if an eighth bit is available for use.
11ESC SP K1B 20 4BRequires an 8-bit code.
12ESC SP L1B 20 4CComplies to ISO/IEC 4873 (ECMA-43) level 1.
13ESC SP M1B 20 4DComplies to ISO/IEC 4873 (ECMA-43) level 2.
14ESC SP N1B 20 4EComplies to ISO/IEC 4873 (ECMA-43) level 3.
16ESC SP P1B 20 50SI / LS0 used.
18ESC SP R1B 20 52SO / LS1 used.
19ESC SP S1B 20 53LS1R used in 8-bit environments, SO used in 7-bit environments.
20ESC SP T1B 20 54LS2 used.
21ESC SP U1B 20 55LS2R used in 8-bit environments, LS2 used in 7-bit environments.
22ESC SP V1B 20 56LS3 used.
23ESC SP W1B 20 57LS3R used in 8-bit environments, LS3 used in 7-bit environments.
26ESC SP Z1B 20 5ASS2 used.
27ESC SP [1B 20 5BSS3 used.
28ESC SP \1B 20 5CSingle-shifts invoke over GR.

ISO/IEC 2022 code versions

[edit]
(A screenshot of an old version of Firefox showing Big5, GB 2312, GBK, GB 18030, HZ, ISO-2022-CN, Big5-HKSCS, EUC-TW, EUC-JP, ISO-2022-JP, Shift_JIS, EUC-KR, UHC, Johab and ISO-2022-KR as available encodings under the CJK sub-menu.)
Various ISO 2022 and other CJK encodings supported by Mozilla Firefox as of 2004. (This support has been reduced in later versions to avoid certain cross site scripting attacks.)

Six 7-bit ISO 2022 code versions (ISO-2022-CN, ISO-2022-CN-EXT, ISO-2022-JP, ISO-2022-JP-1, ISO-2022-JP-2 and ISO-2022-KR) are defined by IETF RFCs, of which ISO-2022-JP and ISO-2022-KR have been extensively used in the past.[109] A number of other variants are defined by vendors, including IBM.[110] Although UTF-8 is the preferred encoding in HTML5, legacy content in ISO-2022-JP remains sufficiently widespread that the WHATWG encoding standard retains support for it,[111] in contrast to mapping ISO-2022-KR, ISO-2022-CN and ISO-2022-CN-EXT[112] entirely to the replacement character,[113] due to concerns about code injection attacks such as cross-site scripting.[111][113]

8-bit code versions include Extended Unix Code.[11][12] The ISO/IEC 8859 encodings also follow ISO 2022, in a subset stipulated in ISO/IEC 4873.[9][10]

Japanese e-mail versions

[edit]

ISO-2022-JP

[edit]

ISO-2022-JP is a widely used encoding for Japanese, in particular in e-mail. It was introduced for use on the JUNET network and later codified in IETF RFC 1468, dated 1993.[114] It has an advantage over other encodings for Japanese in that it does not require 8-bit clean transmission. Microsoft calls it Code page 50220.[115] It starts in ASCII and includes the following escape sequences:

  • ESC ( B to switch to ASCII (1 byte per character)
  • ESC ( J to switch to JIS X 0201-1976 (ISO/IEC 646:JP) Roman set (1 byte per character)
  • ESC $ @ to switch to JIS X 0208-1978 (2 bytes per character)
  • ESC $ B to switch to JIS X 0208-1983 (2 bytes per character)

Use of the two characters added in JIS X 0208-1990 is permitted, but without including the IRR sequence, i.e. using the same escape sequence as JIS X 0208-1983.[114] Also, due to being registered before designating multi-byte sets except to G0 was possible, the escapes for JIS X 0208 do not include the second I-byte (.[89]

The RFC notes that some existing systems did not distinguish ESC ( B from ESC ( J, or did not distinguish ESC $ @ from ESC $ B, but stipulates that the escape sequences should not be changed by systems simply relaying messages such as e-mails.[114] The WHATWG Encoding Standard referenced by HTML5 handles ESC ( B and ESC ( J distinctly, but treats ESC $ @ the same as ESC $ B when decoding, and uses only ESC $ B for JIS X 0208 when encoding.[116] The RFC also notes that some past systems had made erroneous use of the sequence ESC ( H to switch away from JIS X 0208, which is actually registered for ISO-IR-11 (a Swedish variant of ISO 646 and World System Teletext).[114][i]

Versions with halfwidth katakana

[edit]

Use of ESC ( I to switch to the JIS X 0201-1976 Kana set (1 byte per character) is not part of the ISO-2022-JP profile,[114] but is also sometimes used. Python allows it in a variant which it labels ISO-2022-JP-EXT (which also incorporates JIS X 0212 as described below, completing coverage of EUC-JP);[117] [118] по названию и структуре это близко к кодировке, обозначенной -2022-JPext ISO DEC , которая, кроме того, добавляет двухбайтовую пользовательскую область, доступ к которой осуществляется с помощью ESC $ ( 0 чтобы завершить описание кандзи Super DEC . [119] Вариант WHATWG/HTML5 позволяет декодировать катакану JIS X 0201 во входных данных ISO-2022-JP, но при кодировании преобразует символы в их эквиваленты JIS X 0208. [116] Кодовая страница Microsoft для ISO-2022-JP с дополнительно разрешенным кана JIS X 0201 — кодовая страница 50221 . [115]

Другие, более старые варианты, известные как JIS7 ​​и JIS8, основаны непосредственно на 7-битных и 8-битных кодировках, определенных JIS X 0201 , и позволяют использовать кану JIS X 0201 из G1 без escape-последовательностей, используя Shift Out и Shift In или устанавливая восьмую бит (вызываемый GR) соответственно. [120] Они не получили широкого распространения; [120] Поддержка JIS X 0208 в расширенном 8-битном JIS X 0201 чаще достигается с помощью Shift JIS . Кодовая страница Microsoft для ISO 2022 на основе JIS X 0201 с однобайтовой катаканой через Shift Out и Shift In — кодовая страница 50222 . [115]

ISO-2022-JP-2 — это многоязычное расширение ISO-2022-JP, определенное в RFC 1554 (от 1993 г.), которое допускает следующие escape-последовательности в дополнение к последовательностям ISO-2022-JP. Части ISO/IEC 8859 представляют собой наборы из 96 символов, которые не могут быть обозначены как G0, и доступны из G2 с использованием 7-битной escape-последовательности односменного кода SS2: [121]

  • ESC $ A для переключения на GB 2312-1980 (2 байта на символ)
  • ESC $ ( C для перехода на KS X 1001-1992 (2 байта на символ)
  • ESC $ ( D для перехода на JIS X 0212-1990 (2 байта на символ)
  • ESC . A для переключения на старшую часть ISO/IEC 8859-1 , набор расширенной латиницы 1 (1 байт на символ) [обозначается G2]
  • ESC . F для переключения на старшую часть ISO/IEC 8859-7 , набор базового греческого языка (1 байт на символ) [обозначается как G2]

ISO-2022-JP с представлением ISO-2022-JP-2 для JIS X 0212, но не с другими расширениями, впоследствии был назван ISO-2022-JP-1 в RFC 2237 от 1997 года. [122]

IBM японский TCP

[ редактировать ]

IBM реализует девять 7-битных кодировок японского языка на основе ISO 2022, каждая из которых использует свой набор escape-последовательностей: IBM-956, IBM-957, IBM-958, IBM-959, IBM-5052, IBM-5053, IBM-5054, IBM-5055 и ISO-2022-JP, которые вместе называются «наборами японских кодированных символов TCP/IP». [123] CCSID 9148 — это стандарт (RFC 1468) ISO-2022-JP. [124]

Варианты IBM ISO-2022-JP
Кодовая страница/CCSID Номер определения ACRI Escape-последовательности для ACRI [110]
956 [125] TCP-01
  • ESC ( J (ИИСУС X 0201 Роман)
  • ESC $ ( B (JIS X 0208, 1983+, длинная escape-последовательность)
  • ESC $ I (JIS X 0201 Катакана)
  • ESC $ ( D
957 [126] TCP-02
  • ESC ( J (ИИСУС X 0201 Роман)
  • ESC $ ( @ (JIS X 0208, 1978, длинная escape-последовательность)
  • ESC $ I (JIS X 0201 Катакана)
  • ESC $ ( D (ДЖИС Х 0212)
958 [127] TCP-03
  • ESC ( A (ASCII)
  • ESC $ ( B (JIS X 0208, 1983+, длинная escape-последовательность)
  • ESC $ I (JIS X 0201 Катакана)
  • ESC $ ( D (ДЖИС Х 0212)
959 [128] TCP-04
  • ESC ( A (ASCII)
  • ESC $ ( @ (JIS X 0208, 1978, длинная escape-последовательность)
  • ESC $ I (JIS X 0201 Катакана)
  • ESC $ ( D (ДЖИС Х 0212)
5052 [129] TCP-05
  • ESC ( J (ИИСУС X 0201 Роман)
  • ESC $ B (JIS X 0208, 1983+)
  • ESC $ I (JIS X 0201 Катакана)
  • ESC $ ( D (ДЖИС Х 0212)
5053 [130] TCP-06
  • ESC ( J (ИИСУС X 0201 Роман)
  • ESC $ @ (JIS X 0208, 1978 г.)
  • ESC $ I (JIS X 0201 Катакана)
  • ESC $ ( D (ДЖИС Х 0212)
5054 [131] TCP-07
  • ESC ( A (ASCII)
  • ESC $ B (JIS X 0208, 1983+)
  • ESC $ I (JIS X 0201 Катакана)
  • ESC $ ( D (ДЖИС Х 0212)
5055 [132] TCP-08
  • ESC ( A (ASCII)
  • ESC $ @ (JIS X 0208, 1978 г.)
  • ESC $ I (JIS X 0201 Катакана)
  • ESC $ ( D (ДЖИС Х 0212)
9148 [124] TCP-16
  • ESC ( A (ASCII)
  • ESC ( J (ИИСУС X 0201 Роман)
  • ESC $ @ (JIS X 0208, 1978 г.)
  • ESC $ B (JIS X 0208, 1983+)

ДЖИС Х 0213

[ редактировать ]

Стандарт JIS X 0213 , впервые опубликованный в 2000 году, определяет обновленную версию ISO-2022-JP без расширений ISO-2022-JP-2, получившую название ISO-2022-JP-3 . Дополнения, внесенные в JIS X 0213 по сравнению с базовым стандартом JIS X 0208, привели к новой регистрации расширенной плоскости JIS 1, а новая плоскость 2 получила собственную регистрацию. Дальнейшие дополнения к плоскости 1 в редакции стандарта 2004 года привели к добавлению дополнительной регистрации к дальнейшей версии профиля, получившей название ISO-2022-JP-2004 . Помимо основных кодов обозначений ISO-2022-JP, признаются следующие обозначения:

Другие 7-битные версии

[ редактировать ]

ISO-2022-KR определен в RFC 1557 от 1993 года. [133] Он кодирует ASCII и корейский двухбайтовый код KS X 1001-1992 . [134] [135] ранее назывался KS C 5601-1987. В отличие от ISO-2022-JP-2, он использует символы Shift Out и Shift In для переключения между ними после включения ESC $ ) C один раз в начале строки для обозначения от KS X 1001 до G1. [133]

ISO-2022-CN и ISO-2022-CN-EXT определены в RFC 1922, датированном 1996 годом. Это 7-битные кодировки, в которых используются функции Shift Out и Shift In (для переключения между G0 и G1), а также 7-битный escape-код. формы односменных функций SS2 и SS3 (для доступа к G2 и G3). [136] Они поддерживают наборы символов GB 2312 (для упрощенного китайского ) и CNS 11643 (для традиционного китайского ).

Базовый профиль ISO-2022-CN использует ASCII в качестве набора G0 (сдвиг), а также включает GB 2312 и первые две плоскости CNS 11643 (поскольку этих двух плоскостей достаточно для представления всех традиционных китайских иероглифов из обычных Big5 , к которому RFC приводит соответствие в приложении): [136]

  • ESC $ ) A для переключения на GB 2312-1980 (2 байта на символ) [обозначается G1]
  • ESC $ ) G для переключения на CNS 11643-1992 Plane 1 (2 байта на символ) [обозначается G1]
  • ESC $ * H для переключения на CNS 11643-1992 Plane 2 (2 байта на символ) [обозначается как G2]

Профиль ISO-2022-CN-EXT допускает следующие дополнительные наборы и плоскости. [136]

  • ESC $ ) E для переключения на ISO-IR-165 (2 байта на символ) [обозначается G1]
  • ESC $ + I для переключения на CNS 11643-1992 Plane 3 (2 байта на символ) [обозначается G3]
  • ESC $ + J для переключения на CNS 11643-1992 Plane 4 (2 байта на символ) [обозначается G3]
  • ESC $ + K для переключения на CNS 11643-1992 Plane 5 (2 байта на символ) [обозначается G3]
  • ESC $ + L для переключения на CNS 11643-1992 Plane 6 (2 байта на символ) [обозначается G3]
  • ESC $ + M для переключения на CNS 11643-1992 Plane 7 (2 байта на символ) [обозначается G3]

В профиле ISO-2022-CN-EXT дополнительные стандартные графические наборы Guobiao перечислены как разрешенные, но при условии, что им присвоены зарегистрированные escape-последовательности ISO 2022: [136]

  • ГБ 12345 в G1
  • GB 7589 или GB 13131 в G2
  • ГБ 7590 или ГБ 13132 в G3

Персонаж после ESC (для однобайтовых наборов символов) или ESC $ (для многобайтовых наборов символов) указывает тип набора символов и назначенный рабочий набор. В приведенных выше примерах персонаж ( (0x28) обозначает набор из 94 символов в наборе символов G0, тогда как ), * или + (0x29–0x2B) обозначает наборы символов G1–G3.

ISO-2022-KR и ISO-2022-CN используются реже, чем ISO-2022-JP, и иногда намеренно не поддерживаются из соображений безопасности. Примечательно, что стандарт кодирования WHATWG , используемый HTML5 , сопоставляет ISO-2022-KR, ISO-2022-CN и ISO-2022-CN-EXT (а также HZ-GB-2312 ) с «замещающим» декодером, [112] который сопоставляет все входные данные с символом замены (�), чтобы предотвратить определенные межсайтовые сценарии и связанные с ними атаки, которые используют разницу в поддержке кодирования между клиентом и сервером. [113] Хотя та же проблема безопасности (позволяющая по-разному интерпретировать последовательности байтов ASCII) также применима к ISO-2022-JP и UTF-16 , они не могут быть обработаны таким образом из-за того, что они гораздо чаще используются в развернутом контенте. [111]

В апреле 2024 года обнаружена брешь в безопасности. [137] был найден в реализации ISO-2022-CN-EXT в glibc , что привело к рекомендациям полностью отключить кодирование в системах Linux. [138]

ИСО/МЭК 4873

[ редактировать ]
Связь между редакциями и уровнями ECMA-43 (ISO/IEC 4873) и EUC .

Подмножество ISO 2022, применяемое к 8-битным однобайтовым кодировкам, определяется стандартом ISO/IEC 4873 , также опубликованным Ecma International как ECMA-43. ISO/IEC 8859 определяет 8-битные коды для ISO/IEC 4873 (или ECMA-43) уровня 1. [9] [10]

ISO/IEC 4873/ECMA-43 определяет три уровня кодирования: [139]

  • Уровень 1, который включает набор C0, набор ASCII G0, дополнительный набор C1 и дополнительный однобайтовый (94- или 96-символьный) набор G1. G0 вызывается через GL, а G1 вызывается через GR. Использование функций сдвига не допускается.
  • Уровень 2, который включает однобайтовый набор G2 и/или G3 (94 или 96 символов) в дополнение к обязательному набору G1. Разрешены только функции одной смены SS2 и SS3 (т.е. блокирующие сдвиги запрещены), и они вызываются в области GL (включая 0x20 и 0x7F в случае набора 96). SS2 и SS3 должны быть доступны в C1 по адресам 0x8E и 0x8F соответственно. Этот минимальный необходимый набор C1 для ISO 4873 зарегистрирован как ISO-IR-105. [69]
  • Уровень 3, который разрешает функции блокировки-переключения GR LS1R, LS2R и LS3R в дополнение к одиночным переключениям, но в остальном имеет те же ограничения, что и уровень 2.

Более ранние версии стандарта допускали присвоения не-ASCII в наборе G0 при условии, что инвариантные позиции ISO/IEC 646 были сохранены, что другие позиции были назначены пробельным (не объединяемым) символам, что 0x23 был назначен либо £ , либо #. , и этот 0x24 был назначен либо $ , либо ¤ . [140] Например, 8-битная кодировка JIS X 0201 совместима с более ранними редакциями. Впоследствии это было изменено, чтобы полностью определить набор ISO / IEC 646: 1991 IRV / ISO-IR № 6 (ASCII). [141] [142] [143]

Использование ISO/IEC 646 IRV (синхронизировано с ASCII с 1991 года) по ISO/IEC 4873 уровня 1 без набора C1 или G1, т.е. использование IRV в 8-битной среде, в которой не используются коды сдвига и высокий уровень бит всегда равен нулю, известен как ISO 4873 DV , где DV означает «Версия по умолчанию». [144]

В случаях, когда повторяющиеся символы доступны в разных наборах, действующая редакция ISO/IEC 4873/ECMA-43 разрешает использовать эти символы только в рабочем наборе с наименьшим номером, в котором они встречаются. [145] Например, если символ присутствует как в наборе G1, так и в наборе G3, его необходимо использовать из набора G1. Однако использование других наборов разрешено в более ранних выпусках. [143]

ISO/IEC 8859 определяет полные кодировки на уровне 1 ISO/IEC 4873 и не допускает совместного использования нескольких частей ISO/IEC 8859. Он предусматривает, что ISO/IEC 10367 . вместо уровней 2 и 3 ISO/IEC 4873 следует использовать [9] [10] ISO/IEC 10367:1991 включает наборы G0 и G1, соответствующие тем, которые используются в первых девяти частях ISO/IEC 8859 (т.е. те, которые существовали по состоянию на 1991 год, когда он был опубликован), а также некоторые дополнительные наборы. [146]

Escape-последовательности обозначения набора символов используются для идентификации или переключения между версиями во время обмена информацией только в том случае, если этого требует дополнительный протокол; в этом случае стандарт требует последовательности объявлений ISO/IEC 2022, определяющей уровень ISO/IEC 4873, за которой следует полный набор escape-символов, определяющих обозначения наборов символов для C0, C1, G0, G1, G2 и G3 соответственно (но опуская обозначения G2 и G3 для уровня 1), с F -байтом 0x7E, обозначающим пустой набор. Каждый уровень ISO/IEC 4873 имеет свою собственную последовательность объявлений ISO/IEC 2022, а именно: [147]

Код Шестигранник Объявление
ESC SP L1B 20 4CИСО 4873 уровень 1
ESC SP M1B 20 4DИСО 4873 уровень 2
ESC SP N1B 20 4EИСО 4873 уровень 3

Расширенный код Unix

[ редактировать ]

переменной ширины, Расширенный код Unix (EUC) — это 8-битная система кодирования символов используемая в основном для японского , корейского и упрощенного китайского языков . Он основан на ISO 2022, и только наборы символов, соответствующие структуре ISO 2022, могут иметь формы EUC. Могут быть представлены до четырех наборов кодированных символов (в G0, G1, G2 и G3). Набор G0 вызывается через GL, набор G1 вызывается через GR, а наборы G2 и G3 (если они присутствуют) вызываются с использованием одиночных сдвигов SS2 и SS3, которые используются как байты CR (т. е. 0x8E и 0x8F соответственно) и вызывать через GR (не GL). [11] Коды блокировки смены не используются. [12]

страны, Код, назначенный набору G0, — это ASCII или национальный набор символов ISO 646 например KS-Roman (KS X 1003) или JIS-Roman (нижняя половина JIS X 0201 ). [11] Следовательно, 0x5C ( обратная косая черта в US-ASCII) используется для обозначения знака иены в некоторых версиях EUC-JP и знака вона в некоторых версиях EUC-KR.

G1 используется для кодированного набора символов 94x94, представленного двумя байтами. EUC -CN Форма GB 2312 и EUC-KR являются примерами таких двухбайтовых кодов EUC. EUC-JP включает символы, представленные тремя байтами (т. е. SS3 плюс два байта), тогда как в EUC-TW один символ может занимать до четырех байтов (т. е. SS2 плюс три байта).

Сам код EUC не использует последовательности объявлений или обозначений из ISO 2022; однако это соответствует следующей последовательности из четырех последовательностей дикторов, значения которых распределяются следующим образом. [148]

Индивидуальная последовательность Шестнадцатеричный Особенность EUC обозначена
ESC SP C1B 20 43ISO-8 (8 бит, G0 в GL, G1 в GR)
ESC SP Z1B 20 5AДоступ к G2 осуществляется через SS2
ESC SP [1B 20 5BДоступ к G3 осуществляется через SS3
ESC SP \1B 20 5CОдносменный вызов через GR

Составной текст (X11)

[ редактировать ]

Консорциум X определил профиль ISO 2022 под названием Compound Text в качестве формата обмена в 1989 году. [149] При этом используются только четыре управляющих кода: ХТ ( 0x09), NL (новая строка, кодируется как ЛФ , 0x0A) , ЭСК ( 0x1B) и CSI (в 8-битном представлении 0x9B), [150] с СДС ( CSI … ]) Последовательность CSI используется для управления двунаправленным текстом. [151] Это 8-битный код, использующий G0 и G1 для GL и GR, и соответствует ISO-8859-1 . в исходном состоянии [152] Используются следующие F-байты:

Последовательности обозначений ISO 2022, используемые в составном тексте X11 [153]
Тип escape-последовательности Последний байт Графический набор
GZD4, G1D4 (для наборов из 94 символов) B ( 0x42) ASCII
I ( 0x49) JIS X 0201 катакана
J ( 0x4A) ИИСУС X 0201 Романтика
G1D6 (для наборов из 96 символов) A ( 0x41) ISO-8859-1 верхняя часть
B ( 0x42) ISO-8859-2 верхняя часть
C ( 0x43) ISO-8859-3 верхняя часть
D ( 0x44) ISO-8859-4 верхняя часть
F ( 0x46) ISO-8859-7 верхняя часть
G ( 0x47) ISO-8859-6 верхняя часть
H ( 0x48) ISO-8859-8 верхняя часть
L ( 0x4C) ISO-8859-5 верхняя часть
M ( 0x4D) ISO-8859-9 верхняя часть
GZDM4, G1DM4 (для 2-байтовых наборов) A ( 0x41) ГБ 2312
B ( 0x42) ДЖИС Х 0208
C ( 0x43) КС С 5601

Для указания кодировок с помощью меток X11 Compound Text определяет пять последовательностей DOCS для частного использования: ESC % / 0 ( 1B 25 2F 30) для кодировок переменной длины и ESC % / 1 через ESC % / 4 для кодировок фиксированной длины с использованием от одного до четырех байтов соответственно. Вместо использования другой escape-последовательности для возврата к ISO 2022 два байта, следующие за исходной escape-последовательностью, определяют оставшуюся длину в байтах, закодированную в базе 128 с использованием байтов. 0x80–FF. Метка кодировки включается в ISO 8859-1 перед закодированным текстом и заканчивается СТХ ( 0x02). [108]

Сравнение с другими кодировками

[ редактировать ]

Преимущества

[ редактировать ]
  • Поскольку весь диапазон кодировок графических символов ISO/IEC 2022 можно использовать через GL, доступные глифы существенно не ограничены невозможностью представления GR и C1, например, в системе, ограниченной 7-битными кодировками. Соответственно, это позволяет представлять в такой системе большой набор символов. Как правило, эта 7-битная совместимость на самом деле не является преимуществом, за исключением обратной совместимости со старыми системами. Подавляющее большинство современных компьютеров используют 8 бит на каждый байт.
  • По сравнению с Unicode, ISO/IEC 2022 обходит унификацию Хань , используя коды последовательности для переключения между дискретными кодировками для разных восточноазиатских языков. Это позволяет избежать проблем [ нужна ссылка ] связанные с унификацией, например трудности с поддержкой нескольких языков CJK с соответствующими вариантами символов в одном документе и шрифте.

Недостатки

[ редактировать ]
  • Поскольку ISO/IEC 2022 представляет собой кодировку с отслеживанием состояния, программа не может переходить в середину блока текста для поиска, вставки или удаления символов. Это делает манипуляции с текстом очень громоздкими и медленными по сравнению с кодировками без сохранения состояния. Любой переход в середину текста может потребовать резервного копирования предыдущей escape-последовательности, прежде чем можно будет интерпретировать байты, следующие за escape-последовательностью.
  • Из-за особенностей ISO/IEC 2022 с отслеживанием состояния идентичный и эквивалентный символ может быть закодирован в разных наборах символов, которые могут быть обозначены как любой из G0–G3, который может быть вызван с использованием одиночных сдвигов или с использованием блокирующих сдвигов для GL или ГР. Следовательно, символы могут быть представлены разными способами, а это означает, что две визуально идентичные и эквивалентные строки не могут быть надежно сопоставлены на предмет равенства.
  • Некоторые системы, такие как DICOM и некоторые клиенты электронной почты, используют вариант ISO-2022 (например, «ISO 2022 IR 100»). [154] ) в дополнение к поддержке нескольких других кодировок. [155] Этот тип вариаций затрудняет портативную передачу текста между компьютерными системами.
  • UTF-1 , многобайтовый формат преобразования Unicode , совместимый с представлением 8-битных управляющих символов ISO/IEC 2022, имеет различные недостатки по сравнению с UTF-8 и переключением с других кодировок или на другие кодировки, поддерживаемые ISO/IEC 2022. , обычно не требуется в документах Unicode.
  • Благодаря escape-последовательностям можно создавать последовательности атакующих байтов, в которых вредоносная строка (например, межсайтовый скриптинг ) маскируется до тех пор, пока она не будет декодирована в Unicode, что может позволить ей обойти очистку. [156] Таким образом, использование этой кодировки рассматривается комплектами защиты от вредоносных программ как подозрительное. [157] [ нужен лучший источник ] а 7-битные данные ISO 2022 (за исключением ISO-2022-JP) полностью сопоставляются с символом замены в HTML5 для предотвращения атак. [112] [113] Ограниченные версии 8-битного кода ISO 2022, которые не используют escape-символы обозначения или коды блокировки блокировки, такие как расширенный код Unix , не разделяют эту проблему.
  • Конкатенация может создать проблемы. Такие профили, как ISO-2022-JP, указывают, что поток начинается в состоянии ASCII и должен заканчиваться в состоянии ASCII. [114] Это необходимо для того, чтобы гарантировать, что символы в объединенных потоках ISO-2022-JP и/или ASCII будут интерпретироваться в правильном наборе. Это приводит к тому, что если поток, который заканчивается многобайтовым символом, объединяется с потоком, который начинается с многобайтового символа, генерируется пара escape-кодов, переключающихся на ASCII и сразу же от него. Однако, как указано в Техническом отчете Unicode № 36 («Вопросы безопасности Unicode»), пары escape-последовательностей ISO 2022 без символов между ними должны генерировать замещающий символ («�»), чтобы предотвратить их использование для маскировки вредоносных последовательностей, таких как как межсайтовый скриптинг . [158] Реализация этой меры, например, в Mozilla Thunderbird , привела к проблемам совместимости, поскольку при объединении двух потоков ISO-2022-JP генерировались неожиданные символы «��». [156]

См. также

[ редактировать ]
  1. ^ Японский : , латинизированный : кутен ; китайский : местоположение ; пиньинь : qūwèi ; корейский : 행렬 ; RR : хэннёль ;
  2. ^ Японский : , латинизированный : ку , букв. 'зона'; Китайский : ; пиньинь : цю ; Корейский : Ханджа : ; RR : Хэнг
  3. ^ Японский : , латинизированный : десять , букв. 'точка'; Китайский : ; пиньинь : вэй ; горит. 'позиция'; Корейский : ; Ханджа : ; РР : йёль
  4. ^ Японский : , латинизированный : мужчины , букв. 'лицо'
  5. ^ Перейти обратно: а б Указано для F байтов 0x40 ( @), 0x41 ( A) и 0x42 ( B) только по историческим причинам. [89] В некоторых реализациях, таких как SoftBank 2G кодирование смайлов , используются дополнительные escape-символы этой формы для целей, не соответствующих ISO-2022. [96]
  6. ^ Внесено в список MARC-8 . [3] См. сноску для ESC , F ниже для фона.
  7. ^ F , скорректированный в диапазоне 1-63, указывает, какая (совместимая с предыдущими версиями) версия следующей регистрации необходима, чтобы старые системы знали, что они устарели. [97]
  8. ^ В более ранних выпусках наборов из 96 символов не существовало, а escape-коды, которые теперь используются для наборов из 96 символов, были зарезервированы как место для дополнительных наборов из 94 символов. Соответственно, ESC 0x1B 0x2C последовательность была определена в ранних редакциях стандарта как обозначение дальнейших наборов из 94 символов для G0. [98] Поскольку наборы из 96 символов не могут быть обозначены как G0, этот первый байт I не используется текущей редакцией стандарта. Однако он по-прежнему указан в MARC-8 . [3]
  9. ^ См. также, например, Printronix (2012 г.), Справочное руководство программиста OKI® (PDF) , стр. 26 для более новой системы, которая использует ESC ( H для переключения на ASCII из DBCS.
  1. ^ ECMA-35 (1994) , Краткая история
  2. ^ ECMA-35 (1994) , с. 51, приложение Д
  3. ^ Перейти обратно: а б с д и «Техника 2: Использование стандартных альтернативных наборов графических символов» . MARC 21 Спецификации для структуры записи, наборов символов и носителей обмена . Библиотека Конгресса . 05.12.2007. Архивировано из оригинала 22 июля 2020 г. Проверено 19 июля 2020 г.
  4. ^ «ECMA-35: Структура кода символов и методы расширения (веб-страница)» . Экма Интернешнл . Архивировано из оригинала 25 апреля 2022 г. Проверено 27 апреля 2022 г.
  5. ^ Перейти обратно: а б с д ECMA-35 (1994) , стр. 15–16, глава 8.1.
  6. ^ Перейти обратно: а б ECMA-35 (1994) , глава 13
  7. ^ Перейти обратно: а б ECMA-35 (1994) , главы 12, 14
  8. ^ Перейти обратно: а б ECMA-35 (1994) , глава 11
  9. ^ Перейти обратно: а б с д и ISO/IEC FDIS 8859-10 (1998) , стр. 1, глава 1 («Объем применения»)
  10. ^ Перейти обратно: а б с д и ECMA-144 (2000) , с. 1, глава 1 («Объем применения»)
  11. ^ Перейти обратно: а б с д и ж Лунде (2008) , стр. 242–245, глава 4 («Методы кодирования»), раздел «Кодирование EUC».
  12. ^ Перейти обратно: а б с д Лунде (2008) , стр. 253–255, глава 4 («Методы кодирования»), раздел «Кодировки EUC и ISO-2022».
  13. ^ Перейти обратно: а б ИСО-ИР-196 (1996 г.)
  14. ^ Перейти обратно: а б с Мой, Эдвард; Гильдеа, Стивен; Дикки, Томас. «Управление, начинающееся с ESC» . Управляющие последовательности XTerm . Архивировано из оригинала 10 октября 2019 г. Проверено 4 октября 2019 г.
  15. ^ ECMA-35 (1994) , главы 6, 7.
  16. ^ ECMA-35 (1994) , глава 8
  17. ^ ECMA-35 (1994) , глава 9
  18. ^ Перейти обратно: а б ECMA-35 (1994) , глава 15
  19. ^ Лунде (2008) , стр. 228–234, глава 4 («Методы кодирования»), раздел «Кодирование ISO-2022»
  20. ^ Лунде (2008) , стр. 19–20, Глава 1 («Обзор обработки информации CJKV»), раздел «Что такое строка-ячейка и плоская-строка-ячейка?»
  21. ^ ECMA-35 (1994) , с. 4, определение 4.11
  22. ^ ECMA-35 (1994) , с. 5, определение 4.18
  23. ^ См., например, ISO-IR-14 (1975) , определяющий обозначение G0 римского набора JIS X 0201 как ESC 2/8 4/10.
  24. ^ ECMA-35 (1994) , с. 5, глава 5.1
  25. ^ См., например, RFC 1468 (1993) , определяющий обозначение G0 римского набора JIS X 0201 как ESC ( J.
  26. ^ ECMA-35 (1994) , с. 7, глава 6.2
  27. ^ ECMA-35 (1994) , с. 10, глава 6.3.2
  28. ^ ECMA-35 (1994) , с. 4, определение 4.17
  29. ^ ECMA-35 (1994) , с. 4, определение 4.14
  30. ^ ECMA-35 (1994) , с. 28, глава 13.1
  31. ^ Перейти обратно: а б с ECMA-35 (1994) , с. 33, глава 13.3.3
  32. ^ ECMA-48 (1991) , стр. 24–26, глава 5.4.
  33. ^ Перейти обратно: а б с д ECMA-35 (1994) , с. 11, глава 6.4.3
  34. ^ ИСО-ИР-208 (1999)
  35. ^ ИСО-ИР-155 (1990)
  36. ^ ИСО-ИР-164 (1992)
  37. ^ Перейти обратно: а б ECMA-35 (1994) , с. 10, глава 6.3.3
  38. ^ Google Inc. (2014). "ansi.go, строка 134" . Библиотека escape-последовательностей ANSI для Go . Архивировано из оригинала 30 апреля 2022 г. Проверено 14 сентября 2019 г.
  39. ^ ECMA-43 (1991) , с. 5, глава 7 («Спецификация символов 8-битного кода»)
  40. ^ ISO/IEC FDIS 8859-10 (1998) , стр. 3, глава 6 («Спецификация кодированного набора символов»)
  41. ^ ECMA-144 (2000) , с. 3, глава 6 («Спецификация кодированного набора символов»)
  42. ^ ECMA-43 (1991) , с. 19, приложение С («Композитные графические символы»)
  43. ^ Перейти обратно: а б ECMA-35 (1994) , с. 10, глава 6.4.1
  44. ^ Перейти обратно: а б ECMA-35 (1994) , с. 11, глава 6.4.4
  45. ^ Перейти обратно: а б с ECMA-35 (1994) , с. 11, глава 6.4.2
  46. ^ ИСО-ИР-104 (1985)
  47. ^ ИСО-ИР-1 (1975)
  48. ^ Перейти обратно: а б ECMA-35 (1994) , с. 19, глава 8.5.1
  49. ^ Перейти обратно: а б ECMA-35 (1994) , с. 19, глава 8.5.2
  50. ^ ECMA-43 (1991) , с. 8, глава 7.6 («Набор C1»)
  51. ^ Перейти обратно: а б ECMA-35 (1994) , с. 29, глава 13.2.1
  52. ^ Перейти обратно: а б ECMA-35 (1994) , с. 12, глава 6.5.1
  53. ^ ECMA-35 (1994) , с. 12, глава 6.5.2
  54. ^ Перейти обратно: а б с ИСО-ИР , с. 19, глава 2.7 («Отдельные функции управления»)
  55. ^ ECMA-35 (1994) , с. 12, глава 6.5.4
  56. ^ ECMA-48 (1991) , глава 5.5.
  57. ^ ISO/TC 97/SC 2 (30 декабря 1976 г.). Возврат к исходному состоянию (RIS) (PDF) . ITSCJ/ IPSJ . ИСО-ИК -35. {{citation}}: CS1 maint: числовые имена: список авторов ( ссылка )
  58. ^ ECMA-35 (1994) , с. 12, глава 6.5.3
  59. ^ Перейти обратно: а б ECMA-35 (1994) , с. 14, глава 7.3, таблица 2
  60. ^ ИСО-ИР-14 (1975)
  61. ^ Перейти обратно: а б МСЭ-Т (11 августа 1995 г.). Рекомендация T.51 (1992 г.) Поправка 1 . Архивировано из оригинала 2 августа 2020 г. Проверено 25 декабря 2019 г.
  62. ^ ИСО-ИР-106 (1985)
  63. ^ ECMA-35 (1994) , с. 15, глава 7.3, примечание 23
  64. ^ ИСО-ИР-140 (1987)
  65. ^ ИСО-ИР-7 (1975)
  66. ^ ИСО-ИР-26 (1976)
  67. ^ ИСО-ИР-36 (1977)
  68. ^ ECMA-35 (1980) , с. 8, глава 5.1.7
  69. ^ Перейти обратно: а б ИСО-ИР-105 (1985 г.)
  70. ^ Перейти обратно: а б с д ECMA-35 (1994) , с. 17, глава 8.3.1
  71. ^ Перейти обратно: а б с д ECMA-35 (1994) , с. 23, глава 9.3.1
  72. ^ Перейти обратно: а б с ECMA-35 (1994) , с. 19, глава 8.4
  73. ^ Перейти обратно: а б с ECMA-35 (1994) , с. 17, глава 8.3.2
  74. ^ ECMA-35 (1994) , стр. 23–24, глава 9.4.
  75. ^ ECMA-35 (1994) , с. 27, глава 11.1
  76. ^ ECMA-35 (1994) , с. 17, глава 8.3.3
  77. ^ ECMA-35 (1994) , с. 47, приложение Б
  78. ^ ИСО-ИК , с. 2, глава 1 («Введение»)
  79. ^ ИСО/МЭК 2375 (2003)
  80. ^ Перейти обратно: а б «Обработка декларации SGML в SP» . SP: система SGML, соответствующая международному стандарту ISO 8879 .
  81. ^ «20: Декларация SGML HTML 4» . Спецификация HTML 4.01 . W3C .
  82. ^ ИСО-ИК , с. 10, глава 2.2 («Набор графических символов из 94 символов со вторым промежуточным байтом»)
  83. ^ ARIB STD-B24 (2008) , с. 39, часть 2, Таблица 7-3
  84. ^ Масчек, Свен; Ле Бретон, Стефан; Гамильтон, Ричард Л. «Об« альтернативном наборе символов рисования линий » » . ~sven_mascheck/ . Архивировано из оригинала 29 декабря 2019 г. Проверено 8 января 2020 г.
  85. ^ ECMA-35 (1994) , с. 36, глава 14.4
  86. ^ ECMA-35 (1994) , с. 36, глава 14.4.2, примечание 48
  87. ^ ECMA-35 (1994) , с. 36, глава 14.4.2, примечание 47
  88. ^ ETS 300 706 (1997) , с. 103, глава 14 («Динамически переопределяемые символы»)
  89. ^ Перейти обратно: а б с д и ж г час я дж к л м н тот п д ECMA-35 (1994) , стр. 35–36, глава 14.3.2.
  90. ^ ISO/IEC 10646 (2017) , стр. 19–20, глава 12.4 («Идентификация набора функций управления»)
  91. ^ ECMA-35 (1994) , с. 32, таблица 5
  92. ^ Перейти обратно: а б с ECMA-35 (1994) , стр. 37–41, глава 15.2.
  93. ^ ECMA-35 (1994) , с. 34, глава 14.2.2
  94. ^ ECMA-35 (1994) , с. 34, глава 14.2.3
  95. ^ Цифровой . «DECDWL — линия двойной ширины и одинарной высоты» . Информация о программаторе видеотерминала VT510 . Архивировано из оригинала 2 августа 2020 г. Проверено 17 января 2020 г.
  96. ^ Кавасаки, Юсуке (2010). «Кодировать::JP::Emoji::Кодировка» . Кодировать-JP-Emoji . Строка 268. Архивировано из оригинала 30 апреля 2022 г. Проверено 28 мая 2020 г.
  97. ^ ECMA-35 (1994) , стр. 36–37, глава 14.5.
  98. ^ ECMA-35 (1980) , стр. 14–15, глава 5.3.7.
  99. ^ Перейти обратно: а б с д ИСО-ИР , с. 20, глава 2.8.1 («Системы кодирования со стандартным возвратом»)
  100. ^ Перейти обратно: а б с д ECMA-35 (1994) , стр. 41–42, глава 15.4.
  101. ^ Перейти обратно: а б с д и ИСО-ИР , с. 21, глава 2.8.2 («Системы кодирования без стандартного возврата»)
  102. ^ ECMA-35 (1994) , с. 41, глава 15.3
  103. ^ Перейти обратно: а б с ISO/IEC 10646 (2017) , стр. 19, глава 12.2 («Идентификация схемы кодирования UCS»)
  104. ^ ISO/IEC 10646 (2017) , стр. 18–19, глава 12.1 («Цель и контекст идентификации»).
  105. ^ ИСО-ИР-192 (1996)
  106. ^ ИСО-ИР-195 (1996)
  107. ^ ISO/IEC 10646 (2017) , с. 20, глава 12.5 («Идентификация системы кодирования ISO/IEC 2022»)
  108. ^ Перейти обратно: а б Шайфлер (1989) , § Кодировки нестандартных наборов символов
  109. ^ Лунде (2008) , стр. 229–230, глава 4 («Методы кодирования»), раздел «Кодировка ISO-2022» «Те кодировки, которые широко использовались в прошлом или продолжают использоваться сегодня для некоторых целей, были выделены».
  110. ^ Перейти обратно: а б «Дополнительная необходимая информация, связанная с кодированием» . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 7 января 2015 г.
  111. ^ Перейти обратно: а б с Стандарт кодирования WHATWG , раздел 2 («Безопасность»).
  112. ^ Перейти обратно: а б с Стандарт кодирования WHATWG , глава 4.2 («Имена и метки»), привязка «замена»
  113. ^ Перейти обратно: а б с д Стандарт кодирования WHATWG , раздел 14.1 («замена»)
  114. ^ Перейти обратно: а б с д и ж RFC 1468 (1993)
  115. ^ Перейти обратно: а б с «Идентификаторы кодовых страниц» . Центр разработки Windows . Майкрософт. Архивировано из оригинала 16 июня 2019 г. Проверено 16 сентября 2019 г.
  116. ^ Перейти обратно: а б Стандарт кодирования WHATWG , раздел 12.2 («ISO-2022-JP»)
  117. ^ Чанг, Хе-Шик. «Модули/cjkcodecs/_codecs_iso2022.c, строка 1122» . Дерево исходного кода cPython . Фонд программного обеспечения Python. Архивировано из оригинала 30 апреля 2022 г. Проверено 15 сентября 2019 г.
  118. ^ «кодеки — реестр кодеков и базовые классы § Стандартные кодировки» . Документация Python 3.7.4 . Фонд программного обеспечения Python. Архивировано из оригинала 28 июля 2019 г. Проверено 16 сентября 2019 г.
  119. ^ «2: Кодовые наборы и преобразование кодовых наборов» . Технический справочник DIGITAL UNIX по использованию японских функций . Корпорация цифрового оборудования , Compaq . [ мертвая ссылка ]
  120. ^ Перейти обратно: а б Лунде (2008) , стр. 236–238, глава 4 («Методы кодирования»), раздел «Предшественник кодировки ISO-2022-JP — кодировка JIS».
  121. ^ RFC 1554 (1993)
  122. ^ RFC 2237 (1997)
  123. ^ «PQ02042: Новая функция для поддержки C/370 iconv() для японского ISO-2022-JP» . ИБМ . 19 января 2021 г. Архивировано из оригинала 4 января 2022 г. Проверено 4 января 2022 г.
  124. ^ Перейти обратно: а б «CCSID 9148» . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 29 ноября 2014 г.
  125. ^ «CCSID 956» . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 2 декабря 2014 г.
  126. ^ «CCSID 957» . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 30 ноября 2014 г.
  127. ^ «CCSID 958» . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 1 декабря 2014 г.
  128. ^ «CCSID 959» . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 2 декабря 2014 г.
  129. ^ «CCSID 5052» . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 29 ноября 2014 г.
  130. ^ «CCSID 5053» . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 29 ноября 2014 г.
  131. ^ «CCSID 5054» . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 29 ноября 2014 г.
  132. ^ «CCSID 5055» . Идентификаторы наборов символов в кодировке IBM Globalization . ИБМ . Архивировано из оригинала 29 ноября 2014 г.
  133. ^ Перейти обратно: а б RFC 1557 (1993)
  134. ^ «КС Х 1001:1992» (PDF) . Архивировано (PDF) из оригинала 26 сентября 2007 г. Проверено 12 июля 2007 г.
  135. ^ ИСО-ИР-149 (1988)
  136. ^ Перейти обратно: а б с д РФК 1922 (1996)
  137. ^ «CVE-2024-2961» .
  138. ^ «Уязвимость GLIBC на серверах, обслуживающих PHP» .
  139. ^ ECMA-43 (1991) , стр. 9–10, глава 8 («Уровни»).
  140. ^ ECMA-43 (1985) , стр. 7–11, глава 7.3 («Набор G0»)
  141. ^ ECMA-43 (1991) , стр. 6–8, глава 7.4 («Набор G0»)
  142. ^ ECMA-43 (1991) , с. 11, глава 10.3 («Идентификация версии»)
  143. ^ Перейти обратно: а б ECMA-43 (1991) , с. 23, приложение E («Основные различия между вторым изданием (1985 г.) и настоящим (третьим) изданием настоящего стандарта ECMA»)
  144. ^ ИПТК (1995). Рекомендуемый формат сообщения IPTC (PDF) (5-е изд.). IPTC TEC 7901. Архивировано (PDF) из оригинала 25 января 2022 г. Проверено 14 января 2020 г.
  145. ^ ECMA-43 (1991) , стр. 10, глава 9.2 («Уникальное кодирование символов»)
  146. ^ ван Винген, Йохан В. (1999). «8. Расширение кода, ISO 2022 и 2375, ISO 4873 и 10367» . Наборы символов. Буквы, жетоны и коды . Терена. Архивировано из оригинала 01 августа 2020 г. Проверено 2 октября 2019 г.
  147. ^ ECMA-43 (1991) , стр. 10–11, глава 10 («Идентификация версии и уровня»)
  148. ^ ИБМ . «Архитектура представления символьных данных (CDRA)» . ИБМ . стр. 157–162. Архивировано из оригинала 23 июня 2019 г. Проверено 18 июня 2020 г.
  149. ^ Шайфлер (1989)
  150. ^ Шайфлер (1989) , § Управляющие персонажи
  151. ^ Шайфлер (1989) , § Направленность
  152. ^ Шайфлер (1989) , § Кодировки стандартного набора символов
  153. ^ Шайфлер (1989) , § Утвержденные стандартные кодировки
  154. ^ «DICOM PS3.2 2016d — соответствие; D.6.2 Наборы символов; D.6 Поддержка наборов символов» . Архивировано из оригинала 16 февраля 2020 г. Проверено 21 мая 2020 г.
  155. ^ «Вариант DICOM ISO 2022» . Архивировано из оригинала 30 апреля 2013 г. Проверено 25 июля 2009 г.
  156. ^ Перейти обратно: а б Сивонен, Анри (17 декабря 2018 г.). «(НЕОТПРАВЛЕННЫЙ ЧЕРНОВИК) Нет генерации U + FFFD для содержимого ASCII-состояния нулевой длины между Escape-последовательностями ISO-2022-JP» (PDF) . Архивировано (PDF) из оригинала 21 февраля 2019 г. Проверено 21 февраля 2019 г.
  157. ^ «935453 — Соберите телеметрию о HZ и других кодировках, которые мы можем попытаться удалить» . Архивировано из оригинала 19 мая 2017 г. Проверено 18 июня 2018 г.
  158. ^ Дэвис, Марк; Суиньяр, Мишель (19 сентября 2014 г.). «3.6.2 Некоторые выходные данные для всех входных данных» . Технический отчет Unicode № 36: Вопросы безопасности Unicode (версия 15) . Консорциум Юникод. Архивировано из оригинала 22 февраля 2019 г. Проверено 21 февраля 2019 г.


Приведенные стандарты и индексы реестра

[ редактировать ]

Указаны зарегистрированные наборы кодов

[ редактировать ]

Интернет-запросы на комментарии цитируются

[ редактировать ]

Другие опубликованные работы, цитируемые

[ редактировать ]

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: fe1c4ad225a52e9bcb1441f2b607b8d1__1714278120
URL1:https://arc.ask3.ru/arc/aa/fe/d1/fe1c4ad225a52e9bcb1441f2b607b8d1.html
Заголовок, (Title) документа по адресу, URL1:
ISO/IEC 2022 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)