如果我有 2 个相同文本的字符串,一个是 UTF-8,另一个是 UTF-16。
假设 UTF-8 字符串总是比 UTF-16 更小或大小相同,是否安全?(按字节)
问问题
547 次
2 回答
16
不,虽然 UTF-8 文本通常会更短,但并非总是如此。
U+0000 和 U+FFFF 之间的任何内容都将在 UTF-16 中用 2 个字节(一个 UTF-16 代码点)表示。
U+0800 和 U+FFFF 之间的字符将在 UTF-8 中用 3 个字节表示。
因此,仅包含(或大部分)该范围内字符的文本在以 UTF-8 表示时很容易比以 UTF-16 表示时更长。
换一种说法:
- U+0000 - U+007F:UTF-8 更短(1 < 2)
- U+0080 - U+07FF:两者大小相同(2 = 2)
- U+0800 - U+FFFF:UTF-8 更长(3 > 2)
- U+10000 - U+10FFFF:两者大小相同(4 = 4)
请注意,以前在 UTF-8 中定义了 5 和 6 字节序列,但根据最新标准不再有效,并且永远不需要表示 Unicode 代码点。
于 2013-01-04T15:04:10.760 回答
3
不。UTF-8 有时会为单个字符使用 3 个或更多字节,具体取决于表示字符的代码点(数字)需要多少位。
于 2013-01-04T15:06:57.660 回答