正如这里所解释的那样,所有Unicode编码都以最大代码点10FFFF
结束,但我听说它们可以延伸到6个字节,这是真的吗?
请查看UTF-8、UTF-16和UTF-32的Unicode编码在存储字符数量方面有何不同?相关答案。
UTF-8和UTF-32理论上可以表示U+10FFFF以上的字符,但被人为限制以匹配UTF-16的容量。
实际上,对于UTF-8编码的某些视图,UTF-8技术上允许编码超出永久固定有效范围上限的代码点;因此,您可以编码超出该范围的代码点,但它将不是任何地方的有效代码点。另一方面,您可以使用不需要的零高位比特编码字符,例如使用Ada符号表示的多个比特编码ASCII代码点,如2#1100_0001#,2#1000_0001#
,这将使ASCII字母A
UTF-8编码为两个字节。但是,它可能会被某些安全过滤器拒绝,因为这种方法常用于黑客和盗版。RFC 3629对此进行了一些解释。应该只编码有效的代码点(由Unicode定义),以安全的方式(没有多余的字节)。