|
NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
码点处理相关功能 更多...
类 | |
| class | codepoint |
| Unicode码点包装类 更多... | |
码点处理相关功能
Unicode码点范围:U+0000 ~ U+10FFFF(排除代理项范围0xD800-0xDFFF)
本实现严格遵循以下 Unicode 和字符编码相关标准规范:
Unicode 核心标准:
UTF 编码格式标准:
通用字符集编码标准:
相关编程语言标准:
根据 Unicode 15.1.0 §2.4,码点空间划分为以下区域:
| 范围名称 | 码点范围 | UTF-8 字节数 | UTF-16 码元数 | 说明 |
|---|---|---|---|---|
| Basic Latin (ASCII) | U+0000 - U+007F | 1 | 1 | 与 ASCII 完全兼容 |
| Latin-1 Supplement | U+0080 - U+00FF | 2 | 1 | ISO 8859-1 扩展 |
| BMP (Basic Multilingual) | U+0100 - U+FFFF | 3 | 1 | 基本多文种平面 |
| Supplementary Planes | U+10000 - U+10FFFF | 4 | 2 (代理对) | 16 个辅助平面 |
| High Surrogates | U+D800 - U+DBFF | — | — | 高代理项(无效码点) |
| Low Surrogates | U+DC00 - U+DFFF | — | — | 低代理项(无效码点) |
| Noncharacters | U+FDD0 - U+FDEF 等 | — | — | 非字符(内部使用) |
| Private Use Area | U+E000 - U+F8FF 等 | — | — | 私用区 |
根据 RFC 3629 §3,UTF-8 编码遵循以下比特模式:
| 码点范围 | UTF-8 字节序列 |
|---|---|
| U+0000 - U+007F | 0xxxxxxx |
| U+0080 - U+07FF | 110xxxxx 10xxxxxx |
| U+0800 - U+FFFF | 1110xxxx 10xxxxxx 10xxxxxx |
| U+10000 - U+10FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
根据 RFC 2781 §2.1,辅助平面字符使用代理对编码:
| 组成部分 | 计算方式 | 值范围 |
|---|---|---|
| 高代理项 | ((cp - 0x10000) >> 10) + 0xD800 | 0xD800 - 0xDBFF |
| 低代理项 | ((cp - 0x10000) & 0x3FF) + 0xDC00 | 0xDC00 - 0xDFFF |
| 特性 | 规范参数 |
|---|---|
| 码点类型 | uint32_t(32 位无符号整数) |
| 最大合法码点 | 0x10FFFF(Unicode §2.4) |
| 替换字符 | U+FFFD(� REPLACEMENT CHARACTER) |
| 无效序列处理 | 替换为 U+FFFD(RFC 3629 §4) |
| 过度长序列检测 | 支持(拒绝非最短形式的 UTF-8 序列) |
| 代理项检测 | 支持(拒绝孤立的代理项) |
| 字节序处理 | 支持(decode_utf16 提供 need_swap 参数) |
根据 Unicode 标准,合法码点必须满足以下条件:
非法的 UTF-8 序列(根据 RFC 3629 §4):