是®;符号是3字节还是4字节的Unicode字符?我怎么知道?

是®;符号是3字节还是4字节的Unicode字符?我怎么知道?,unicode,Unicode,®符号是3字节还是4字节Unicode字符?我怎么知道 也称为\xAE它是unicode数字U+00AE。它在[0x80,0x7ff]的范围内,因此在UTF-8中,它将被编码为两个字节——本部分顶部的表格将详细解释* 如果您使用的是UTF-16,它也将是两个字节,因为不需要继续 (*不过,我的总结是:UTF-8的一个特点是,您可以中途跳入字节流并与文本同步,而不会生成任何虚假字符,因为您可以在没有进一步上下文的情况下判断任何字节是否是连续字符 一个不可避免的副作用是,只有7位ASCII字符适合单

®符号是3字节还是4字节Unicode字符?我怎么知道


也称为\xAE

它是unicode数字U+00AE。它在[0x80,0x7ff]的范围内,因此在UTF-8中,它将被编码为两个字节——本部分顶部的表格将详细解释*

如果您使用的是UTF-16,它也将是两个字节,因为不需要继续

(*不过,我的总结是:UTF-8的一个特点是,您可以中途跳入字节流并与文本同步,而不会生成任何虚假字符,因为您可以在没有进一步上下文的情况下判断任何字节是否是连续字符


一个不可避免的副作用是,只有7位ASCII字符适合单个字节,而其他所有字符都需要多个字节。0xae非常接近7位范围,因此只需要一个额外的字节。有关详细信息,请参阅Wikipedia。)

Unicode字符本身没有任何字节长度。重要的是字符编码。从编码的定义可以知道特定编码中字符的长度(以字节为单位)

例如,在ISO-8859-1(ISO Larin 1)编码中,它只编码Unicode的一小部分,包括“®”,每个字符的长度为1字节

在UTF-16编码中,所有字符的长度为2或4字节,而U+0000…U+FFFF范围内的字符(如“®”)为2字节

在UTF-32编码中,所有字符的长度均为4字节


在UTF-8编码中,字符需要1到4个字节。检查这一点的一个简单方法是使用Fileformat.info(虽然这不是标准信息,只是一个很好的快速参考)。例如,显示某些编码中的字符,包括UTF-8中的0xC2 0xAE(即2个字节)。

@KenWhite,“®”不是ASCII字符。字体与问题无关。@KenWhite学究攻击!ASCII是一种7位代码。®由ISO-8859-1指定为0xae,因此在拉丁语MS Doges、Windows-1252和最新的西方8位位置中也是如此。但从技术上讲,它不是ASCII。@Tommy:好的。:-)很公平。现在去拿Jukka的“ISO Larin 1”编码::-)