为什么度符号不同于UTF-8和unicode?

为什么度符号不同于UTF-8和unicode?,unicode,utf-8,Unicode,Utf 8,为什么度符号不同于UTF-8和unicode 根据:和 unicode是B0但是UTF-8是C2 B0为什么呢 UTF-8是一种使用可变字节数(字节数取决于代码点)对UTF字符进行编码的方法 U+0080和U+07FF之间的代码点使用以下2字节: 其中x表示正在编码的代码点的位 我们考虑U+0B0。在二进制中,0xB0是10110000。如果将这些位替换到上述模板中,则得到: 11000010 10110000 在十六进制中,这是0xC2 0xB0。Unicode(UTF-16和UTF-3

为什么度符号不同于UTF-8和unicode

根据:和


unicode是B0但是UTF-8是C2 B0为什么呢

UTF-8是一种使用可变字节数(字节数取决于代码点)对UTF字符进行编码的方法

U+0080和U+07FF之间的代码点使用以下2字节:

其中
x
表示正在编码的代码点的位

我们考虑U+0B0。在二进制中,0xB0是10110000。如果将这些位替换到上述模板中,则得到:

 11000010 10110000
在十六进制中,这是0xC2 0xB0。

Unicode(UTF-16和UTF-32)使用该字符的代码点
0x00B0
。UTF-8不允许字符的值大于127(
0x007F
),因为每个字节的高位都被保留,以指示此特定字符实际上是多字节字符


基本7位ASCII直接映射到UTF-8的前128个字符。任何值大于127十进制(7F十六进制)的字符都必须通过设置高位并添加1个或多个额外字节来“转义”。

UTF-8是Unicode的一种编码。UTF-16和UTF-32是Unicode的其他编码

Unicode为每个字符定义一个数值;度符号正好是0xB0,或十进制的176。Unicode不定义这些数值的表示方式

UTF-8将值
0xB0
编码为两个连续的八位字节(字节),其值
0xC2 0xB0

UTF-16将相同的值编码为
0x00 0xB0
0xBo 0x00
,具体取决于端度


UTF-32将其编码为
0x00 0x00 0x00 0xB0
0xB0 0x00 0x00 0x00
,这同样取决于尾数(我认为其他排序是可能的)。

NPE、Marc和Keith的回答很好,超出了我对该主题的了解。但我还是读了好几遍才意识到这是怎么回事。然后我看到了这个网页,它让我“点击”

在中,您可以看到以下内容:


请注意如何使用两个字节来编码一个字符。现在请阅读NPE接受的答案。

UTF-8和UTF-16之间有数千个字符的表示形式不同。是什么让您相信学位符号值得特别对待?您需要了解Unicode及其各种编码之间的区别。阅读人们发布的链接。@MikeNakis:我相信所有Unicode代码点在UTF-8和UTF-16中都有不同的表示形式。最重要的是,这只是相同Unicode代码点U+00B0的不同表示形式。UTF-16使用0x00 0xB0(大端号)或0xB0 0x00(小端号),但UTF-8使用0xC2 0xB0(无端号)。您提供的链接非常有用。。。Thanks@JonathanLeffler“无终结性”不是恰当的术语,而是funny@Userthatisnotauser这是恰当的术语@对不起,我指的是破折号的奇怪位置。绝对同意!如果用户看不到该网站,则会将
0x7F
(删除)显示为UTF-8:
7F
,将
0x80
显示为UTF-8:
C2 80
 11000010 10110000