如果实际上要扩展UTF-8,我们应该查看它可以代表的绝对最大值。UTF-8的结构如下:
Char. number range | UTF-8 octet sequence
(hexadecimal) | (binary)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
(从RFC无缝复制)。我们看到,第一个字节始终控制组成当前字符的后续字节数。
如果我们扩展它以允许最多8个字节,我们将获得其他非Unicode表示形式
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
11111110 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
11111111 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
计算该技术允许我们得出的最大可能表示
10000000₂
+ 00100000₂ * 01000000₂
+ 00010000₂ * 01000000₂^2
+ 00001000₂ * 01000000₂^3
+ 00000100₂ * 01000000₂^4
+ 00000010₂ * 01000000₂^5
+ 00000001₂ * 01000000₂^6
+ 00000001₂ * 01000000₂^7
或以10为基数:
128
+ 32 * 64
+ 16 * 64^2
+ 8 * 64^3
+ 4 * 64^4
+ 2 * 64^5
+ 1 * 64^6
+ 1 * 64^7
这使我们的最大陈述量为4,468,982,745,216。
因此,如果这40亿个字符(或您所希望的万亿个)足以表示外来语言,我非常肯定我们可以以最小的努力扩展当前的UTF-8以取悦我们的新外星霸主;-)