如果我有两个相同文本的字符串,一个是UTF-8,另一个是UTF-16 是否可以安全地假设UTF-8字符串总是小于或等于UTF-16字符串? (按字节顺序)
答案 0 :(得分:15)
不,虽然UTF-8文本通常更短,但并不总是。
U + 0000和U + FFFF之间的任何内容都将代表with 2 bytes (one UTF-16 codepoint) in UTF-16。
U + 0800和U + FFFF之间的字符将用3 bytes in UTF-8表示。
因此,当以UTF-8表示时,仅包含(或大部分)该范围内的字符的文本可能比UTF-16中的文本更长。
换句话说:
请注意,5和6字节序列曾经在UTF-8中定义,但根据最新标准不再有效,并且从不需要表示Unicode代码点。
答案 1 :(得分:3)
没有。 UTF-8有时会为一个字符使用3个或更多字节,具体取决于表示字符的代码点(数字)所需的位数。