首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >一个Unicode字符需要多少字节?

一个Unicode字符需要多少字节?
EN

Stack Overflow用户
提问于 2011-03-13 23:02:38
回答 8查看 342.9K关注 0票数 266

我对编码有点困惑。据我所知,旧的ASCII字符每个字符占用一个字节。Unicode字符需要多少字节?

我假设一个Unicode字符可以包含来自任何语言的所有可能的字符-我说的对吗?那么每个字符需要多少字节呢?

UTF-7、UTF-6、UTF-16等是什么意思?它们是不同版本的Unicode吗?

我读过Wikipedia article about Unicode,但它对我来说很难。我期待着看到一个简单的答案。

EN

回答 8

Stack Overflow用户

发布于 2015-10-26 23:38:24

奇怪的是,没有人指出如何计算一个Unicode字符需要多少字节。以下是UTF-8编码字符串的规则:

代码语言:javascript
复制
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个字节,这取决于第一个字节,它将指示它将占用多少字节。

票数 225
EN

Stack Overflow用户

发布于 2011-03-13 23:15:09

简单地说,Unicode是一个标准,它将一个数字(称为代码点)分配给世界上所有的字符(它还在开发中)。

现在你需要用字节来表示这个代码点,这就是character encodingUTF-8, UTF-16, UTF-6是表示这些字符的方式。

UTF-8是多字节字符编码。字符可以有1到6个字节(其中一些现在可能不需要)。

UTF-32每个字符都有4个字节的字符。

UTF-16对每个字符使用16位,并且它只表示称为BMP的Unicode字符的一部分(对于所有实际目的,它已经足够了)。Java在其字符串中使用此编码。

票数 33
EN

Stack Overflow用户

发布于 2016-08-27 20:18:10

在UTF-8中:

代码语言:javascript
复制
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中:

代码语言:javascript
复制
2 bytes:      0 -   D7FF     (multilingual plane except the top 1792 and private-use )
4 bytes:   D800 - 10FFFF

在UTF-32中:

代码语言:javascript
复制
4 bytes:      0 - 10FFFF

根据定义,10FFFF是最后一个unicode码点,之所以这样定义,是因为它是UTF-16的技术限制。

它也是UTF-8可以用4字节编码的最大码点,但UTF-8编码背后的思想也适用于5字节和6字节编码,以覆盖直到7FFFFFFF的码点。只有UTF-32的一半。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5290182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档