首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UTF-8、UTF-16和UTF-32

UTF-8、UTF-16和UTF-32
EN

Stack Overflow用户
提问于 2009-01-31 01:06:00
回答 13查看 255.5K关注 0票数 573

UTF-8、UTF-16和UTF-32之间有什么区别?

我知道它们都将存储Unicode,并且每个都使用不同的字节数来表示一个字符。选择其中一个有优势吗?

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2009-01-30 17:15:19

在ASCII字符代表文本块中的大多数字符的情况下,UTF-8具有优势,因为UTF-8将这些字符编码为8位(如ASCII)。这也是有利的,因为只包含ASCII字符的UTF-8文件具有与ASCII文件相同的编码。

在ASCII不占主导地位的情况下,UTF-16更好,因为它主要使用每个字符2个字节。对于高位字符,UTF-8将开始使用3个或更多字节,而对于大多数字符,UTF-16仍然只使用2个字节。

UTF-32将在4个字节中覆盖所有可能的字符。这使得它变得相当臃肿。我想不出使用它有什么好处。

票数 454
EN

Stack Overflow用户

发布于 2009-01-30 17:10:10

简而言之:

  • UTF-8:可变宽度编码,向后兼容ASCII码。ASCII字符(U+0000到U+007F)占用1个字节,码点U+0080到U+07FF占用2个字节,码点U+0800到U+FFFF占用3个字节,码点U+10000到U+10FFFF占用4个字节。适用于英文文本,不适合亚洲文本。
  • UTF-16:可变宽度编码。代码点U+0000到U+FFFF占用2个字节,码点U+10000到U+10FFFF占用4个字节。英文文本不好,亚洲文本好。
  • UTF-32:固定宽度编码。所有代码点都需要四个字节。这是一个巨大的内存占用,但操作起来很快。很少使用。

参见维基百科:UTF-8UTF-16UTF-32

票数 382
EN

Stack Overflow用户

发布于 2009-01-30 17:10:30

  • UTF-8是可变1到4字节。
  • UTF-16是可变2或4字节。

UTF-32是固定的E110 E1104 E211字节。H212F213

注意:按照最新的约定,UTF-8可以包含1到6个字节:https://lists.gnu.org/archive/html/help-flex/2005-01/msg00030.html

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

https://stackoverflow.com/questions/496321

复制
相关文章

相似问题

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