据我了解,UTF-8 是 ASCII 的超集,因此包括不用于表示可打印字符的控制字符。
我的问题是:是否有任何字节(256 个不同的字节)未被 UTF-8 编码使用?
我想知道您是否可以将UTF-8 文本转换/编码为二进制。
这是我的思考过程:
我不知道 UTF-8 文本编码是如何工作的,也不知道它如何使用这么多字符(只知道它对非 ASCII (Latin-1??) 中的字符使用多个字节),但我知道 ASCII 文本在 UTF 中是有效的-8 因此UTF-8 编码对控制字符(字节 0-30)的使用没有不同,但它们同时不用于显示字符,对吧?
因此,在 256 个不同字节中,仅使用了约 230 个字节。对于 1000(二进制)长的 Unicode 文本,只有 1000^230 个不同的文本?正确的?
如果是这样,您可以将其转换为小于 1000 字节的二进制数据。
Wolfram alpha : 1000 字节的 unicode (假设 unicode 只使用 256 个不同字节中的 230 个) --> 496 字节
0xF8-0xFF 在 UTF-8 中的任何位置都无效,并且其他一些字节在某些位置无效。
字符的前导字节指示用于编码该字符的字节数,每个连续字节具有10两个高位。这样您就可以选择文本中的任何字节并找到包含该字节的字符的开头。如果您不介意失去这种能力,您当然可以想出更有效的编码。