ISO/IEC 2022
编码结构

ISO/IEC 2022编码在字符码值与显示的字符之间给出了两层映射。转义序列允许任何大的登记的图形字符集指代于四个工作集之一：即G0到G3，以及更短的控制序列指出被使用"invoked"的工作集以解释流中的字节。
7比特ASCII图形字符的范围(0x20–0x7F)，是在字符编码表的左侧，称作"GL"码(表示"graphics left")，"高位ASCII"码的范围(0xA0–0xFF), 被称作"GR"码("graphics right")。
默认, GL码指代G0字符, GR码指代G1字符，但这可被控制码或早先的协议修改：
| 码 | 缩写>  | 名字 | 效果 |
| --- | --- | --- | --- |
| 0x0F | SI LS0 | Shift In Locking shift zero | GL编码G0从现在开始 |
| 0x0E | SO LS1 | Shift Out Locking shift one | GL 编码G1从现在开始 |
| ESC 0x6E (n) | LS2 | Locking shift two | GL 编码G2从现在开始 |
| ESC 0x6F (o) | LS3 | Locking shift three | GL 编码G3从现在开始 |
| 0x8E ESC 0x4E (N) | SS2 | Single shift two | GL 编码G2仅用于下一个字符 |
| 0x8F ESC 0x4F (O) | SS3 | Single shift three | GL 编码G3仅用于下一个字符 |
| ESC 0x7E (~) | LS1R | Locking shift one right | GR 编码G1从现在开始 |
| ESC 0x7D (}) | LS2R | Locking shift two right | GR 编码G2从现在开始 |
| ESC 0x7C (|) | LS3R | Locking shift three right | GR 编码G3从现在开始 |
四个工作集的每个可表示94个字符或94n字符。此外，G1到G3可表示96或96n个字符。当后者被用在GL区域，空格字符与delete字符(码值0x20与0x7F)不可用。
还有一些罕用的特性可切换控制字符集，这是单层查询：the 0x00–0x1F范围是C0控制字符集，0x80–0x9F范围是C1控制字符集，转义序列可以切换不同的选择。要求任何C0字符集包含ESC字符出现在码位0x1B。
在上述SS2与SS3例子中，C1控制字符集中的单个控制字符可被7比特编码用于序列ESC 0x40 (@)到ESC 0x5F (_)。额外的控制功能可用于范围ESC 0x60 (`)到ESC 0x7E (~)。
转义序列指代字符集采取这样的形式ESC I [I...] F, 其中有一个或多个中间的I字节来自范围0x20–0x2F, 一个最后的F字节来自0x40–0x7F。(范围0x30–0x3F被保留用于私用F字节)。 I字节辨识字符集类型与被指代的工作集，F字节辨识字符集自身。
| 码值 | 十六进制 | 缩写 | 名字 | 效果 |
| --- | --- | --- | --- | --- |
| ESC ! F | 1B 21 F | CZD | C0-designate | F选择一个C0控制字符集来使用. |
| ESC " F | 1B 22 F | C1D | C1-designate | F选择一个C1控制字符集来使用. |
| ESC % F | 1B 25 F | DOCS | Designate other coding system | F选择一个8-bit编码；使用ESC % @返回到ISO/IEC 2022. |
| ESC % / F | 1B 25 2F F | DOCS | Designate other coding system | F选择一个8-bit编码；没有标准方法返回。 |
| ESC & F | 1B 26 F | IRR | Identify revised registration | F被调整到范围1-63, 指出立即跟随的登记的哪一个修改版被需要，使得老系统知道自身过时了。 |
| ESC ( F | 1B 28 F | GZD4 | G0-designate 94-set | F选择一个94个码位的字符集被用于G0. |
| ESC ) F | 1B 29 F | G1D4 | G1-designate 94-set | F选择一个94个码位的字符集被用于G1. |
| ESC * F | 1B 2A F | G2D4 | G2-designate 94-set | F选择一个94个码位的字符集被用于G2. |
| ESC + F | 1B 2B F | G3D4 | G3-designate 94-set | F选择一个94个码位的字符集被用于G3. |
| ESC - F | 1B 2D F | G1D6 | G1-designate 96-set | F选择一个96个码位的字符集被用于G1. |
| ESC . F | 1B 2E F | G2D6 | G2-designate 96-set | F选择一个96个码位的字符集被用于G2. |
| ESC / F | 1B 2F F | G3D6 | G3-designate 96-set | F选择一个96个码位的字符集被用于G3. |
| ESC $ F ESC $ ( F | 1B 24 F 1B 24 28 F | GZDM4 | G0-designate multibyte 94-set | F选择一个94n个码位的字符集被用于G0. |
| ESC $ ) F | 1B 24 29 F | G1DM4 | G1-designate multibyte 94-set | F选择一个94n个码位的字符集被用于G1. |
| ESC $ * F | 1B 24 2A F | G2DM4 | G2-designate multibyte 94-set | F选择一个94n个码位的字符集被用于G2. |
| ESC $ + F | 1B 24 2B F | G3DM4 | G3-designate multibyte 94-set | F选择一个94n个码位的字符集被用于G3. |
| ESC $ - F | 1B 24 2D F | G1DM6 | G1-designate multibyte 96-set | F选择一个96n个码位的字符集被用于G1. |
| ESC $ . F | 1B 24 2E F | G2DM6 | G2-designate multibyte 96-set | F选择一个96n-个码位的字符集被用于G2. |
| ESC $ / F | 1B 24 2F F | G3DM6 | G3-designate multibyte 96-set | F选择一个96n个码位的字符集被用于G3. |
F字节的登记对于不同类型的字符集是独立的。使用ESC ( A到ESC + A指派的94个字符的图形字符集不相关于使用ESC - A到ESC / A指派的96个字符的图形字符集。二者也不相干于使用ESC $ ( A 到ESC $ + A指派的94n个字符的字符集，等等。
C0与C1控制字符集也是独立的。C0控制字符集用ESC ! A指代，与用ESC " A指代的控制字符集C1无关。
此外，I字节可增加到F字节前面以扩展F字节范围。这仅用于94个字符的字符集，它的码的形式已经使用了ESC ( ! F。