如果UTF-8是8位,是不是意味着最多只能有256个不同的字符?
前128个码位与ASCII中的相同。但它说UTF-8可以支持多达百万个字符?
这是怎么回事?
发布于 2012-04-19 21:34:12
UTF-8并不总是使用一个字节,它是1到4个字节。
前128个字符(US-ASCII码)需要一个字节。
接下来的1920个字符需要两个字节进行编码。这涵盖了几乎所有拉丁字母表的其余部分,还包括希腊语、西里尔语、科普特语、亚美尼亚语、希伯来语、阿拉伯语、叙利亚语和Tāna字母表,以及组合变音标记。
基本多语言平面的其余部分中的字符需要三个字节,基本多语言平面包含通用use12中的几乎所有字符,包括大多数中文、日文和韩文CJK字符。
Unicode的其他平面中的字符需要四个字节,其中包括不太常见的CJK字符、各种历史文字、数学符号和表情符号(象形符号)。
来源:Wikipedia
发布于 2012-04-19 21:40:05
UTF-8对每个字符使用1-4个字节:一个字节用于ascii字符(前128个Unicode值与ascii相同)。但这只需要7位。如果设置了最高("sign")位,则表示多字节序列的开始;设置的连续高位的数量表示字节数,然后是0,其余位构成该值。对于其他字节,最高的两位将是1和0,其余6位用于该值。
所以一个四字节的序列应该以11110开头...(AND...=值的三位),然后是三个字节,每个字节有6位的值,产生21位的值。2^21超出了unicode字符数,因此所有unicode都可以用UTF8表示。
发布于 2012-04-19 21:35:11
UTF-8是一种可变长度编码,的最小为每个字符8位。
具有较高码位的字符将占用最多32位。
https://stackoverflow.com/questions/10229156
复制相似问题