12. 相对于 RFC 2279 的变更 (Changes from RFC 2279)
本节记录 RFC 3629 相对于先前规范 RFC 2279 所做的变更.
字符范围限制 (Character Range Restriction)
将字符范围限制为 0000-10FFFF (UTF-16 可访问范围).
这是一项重要变更, 它将 UTF-8 限定在 Unicode 定义的字符空间内, 排除了此前允许但并不实用的 U+10FFFF 以上范围.
规范性来源变更 (Normative Source Change)
将 Unicode 作为 UTF-8 规范性定义的来源, 同时保留 ISO/IEC 10646 作为字符参考.
此变更承认 Unicode 是 UTF-8 编码规则的主要权威来源, 而 ISO/IEC 10646 仍作为字符集 (character repertoire) 的参考.
术语澄清 (Terminology Clarification)
理顺术语. 现在以字符编号的编码形式 (encoding form) 来描述 UTF-8. UCS-2 和 UCS-4 几乎不再出现.
更新后的术语将 UTF-8 描述为一种编码形式, 而不是一种转换格式, 从而使表述更清晰且更一致.
无效序列处理 (Invalid Sequence Handling)
将警告不要解码无效序列的说明改为规范性“不得”.
此前, 关于无效序列的警告属于资料性说明. 在 RFC 3629 中, 它成为一项规范性要求: 实现不得解码无效序列.
新增 BOM 章节 (BOM Section Addition)
新增一节关于 UTF-8 BOM 的内容, 并为协议提供建议.
第 6 节提供了全面指导, 涵盖:
- 何时使用或禁止 BOM
- 如何在不同协议上下文中处理 BOM
- 面向协议设计者的建议
MIME 注册变更 (MIME Registration Change)
移除了建议的 UNICODE-1-1-UTF-8 MIME charset 注册.
移除了特定版本的 charset 标签, 改用通用的 "UTF-8" 标签, 该标签涵盖 Amendment 5 之后的所有 Unicode 版本.
新增 ABNF 语法 (ABNF Syntax Addition)
为有效的 UTF-8 八位组序列 (octet sequences) 增加了 ABNF 语法
第 4 节现在包含正式的 ABNF 语法, 精确定义了有效的 UTF-8 字节序列, 使实现者更容易验证 UTF-8 数据.
安全章节扩展 (Security Section Expansion)
扩展了安全考虑 (Security Considerations) 章节, 特别是 Unicode 规范化的影响
安全章节得到显著增强, 包括:
- 对过长编码攻击 (overlong encoding attacks) 的详细讨论
- 缓冲区溢出风险
- 规范等价 (canonical equivalence) 的安全影响
- 对 Unicode 规范化形式 (Unicode Normalization Forms) 的引用