我对编码有点困惑。据我所知,旧的ASCII字符每个字符占用一个字节。Unicode字符需要多少字节?
我假设一个Unicode字符可以包含来自任何语言的所有可能的字符-我说的对吗?那么每个字符需要多少字节呢?
UTF-7、UTF-6、UTF-16等是什么意思?它们是不同版本的Unicode吗?
我读过Wikipedia article about Unicode,但它对我来说很难。我期待着看到一个简单的答案。
发布于 2015-10-26 23:38:24
奇怪的是,没有人指出如何计算一个Unicode字符需要多少字节。以下是UTF-8编码字符串的规则:
Binary Hex Comments
0xxxxxxx 0x00..0x7F Only byte of a 1-byte character encoding
10xxxxxx 0x80..0xBF Continuation byte: one of 1-3 bytes following the first
110xxxxx 0xC0..0xDF First byte of a 2-byte character encoding
1110xxxx 0xE0..0xEF First byte of a 3-byte character encoding
11110xxx 0xF0..0xF7 First byte of a 4-byte character encoding
所以快速的答案是:它需要1到4个字节,这取决于第一个字节,它将指示它将占用多少字节。
发布于 2011-03-13 23:15:09
简单地说,Unicode
是一个标准,它将一个数字(称为代码点)分配给世界上所有的字符(它还在开发中)。
现在你需要用字节来表示这个代码点,这就是character encoding
。UTF-8, UTF-16, UTF-6
是表示这些字符的方式。
UTF-8
是多字节字符编码。字符可以有1到6个字节(其中一些现在可能不需要)。
UTF-32
每个字符都有4个字节的字符。
UTF-16
对每个字符使用16位,并且它只表示称为BMP的Unicode字符的一部分(对于所有实际目的,它已经足够了)。Java在其字符串中使用此编码。
发布于 2016-08-27 20:18:10
在UTF-8中:
1 byte: 0 - 7F (ASCII)
2 bytes: 80 - 7FF (all European plus some Middle Eastern)
3 bytes: 800 - FFFF (multilingual plane incl. the top 1792 and private-use)
4 bytes: 10000 - 10FFFF
在UTF-16中:
2 bytes: 0 - D7FF (multilingual plane except the top 1792 and private-use )
4 bytes: D800 - 10FFFF
在UTF-32中:
4 bytes: 0 - 10FFFF
根据定义,10FFFF是最后一个unicode码点,之所以这样定义,是因为它是UTF-16的技术限制。
它也是UTF-8可以用4字节编码的最大码点,但UTF-8编码背后的思想也适用于5字节和6字节编码,以覆盖直到7FFFFFFF的码点。只有UTF-32的一半。
https://stackoverflow.com/questions/5290182
复制相似问题