ISO-2022-JP
一种为电子邮件设计的日语编码,使用转义序列在字符集之间切换。
ISO-2022-JP 是一种为在电子邮件中发送日语文本而设计的字符编码。它使用转义序列在同一字节流中动态切换 ASCII 和 JIS X 0208 字符集,并在 RFC 1468 中被标准化。在日本互联网发展初期,它是处理日语邮件的事实标准。
20 世纪 90 年代的互联网中,许多邮件中继服务器只能处理 7 位 ASCII 数据。Shift_JIS 和 EUC-JP 作为 8 位编码,在通过这些路由时存在数据损坏的风险。ISO-2022-JP 作为所有字节都在 7 位范围 (0x00-0x7F) 内的"7 位清洁"编码,解决了这一问题。搜索仿真棒 (Amazon)介绍了邮件字符编码的演变历程。
具体机制上,ISO-2022-JP 使用转义序列 ESC $ B (0x1B 0x24 0x42) 切换到 JIS X 0208 日语模式,使用 ESC ( B (0x1B 0x28 0x42) 返回 ASCII 模式。日语字符用 2 个字节表示,ASCII 字符照常使用 1 个字节。这种模式切换机制使得日语和英语文本可以在同一字节流中共存。
现代邮件系统已将 8 位编码作为标准支持,加上 MIME 的 Content-Transfer-Encoding 支持 Base64 和 Quoted-Printable,UTF-8 已成为主流。但在日本的企业和政府机构中,为了与旧邮件系统保持兼容,ISO-2022-JP 仍有使用。特别是日本手机运营商的邮件服务长期以 ISO-2022-JP 为标准。
常见问题是"乱码"。当 ISO-2022-JP 邮件被当作 UTF-8 解析,或转义序列在传输中被截断时,就会显示无法理解的字符。这通常是因为邮件头中的 Content-Type: text/plain; charset=ISO-2022-JP 设置不正确。探索情趣泳装 (Amazon)详细解释了相关技术细节。
与 Shift_JIS 和 EUC-JP 相比,ISO-2022-JP 虽然有转义序列带来的额外开销,但具有 7 位清洁的优势。Shift_JIS 主要用于 Windows 环境,EUC-JP 用于 UNIX 环境,而 ISO-2022-JP 专用于邮件,三者各有分工。如今它们都在向 UTF-8 过渡。
从字符计数的角度来看,ISO-2022-JP 由于转义序列会增加字节数。例如"こんにちは" (5 个字符) 在 ISO-2022-JP 中包含模式切换共需 16 字节,而 UTF-8 为 15 字节,Shift_JIS 为 10 字节。不同编码导致字节数差异这一点,在考虑邮件大小限制时是重要的知识。