为什么度符号不同于UTF-8和unicode?
为什么度符号不同于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
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