栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

UTF-8和UTF-16之间的区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

UTF-8和UTF-16之间的区别?

我相信Web上有很多关于此的好文章,但这是一个简短的摘要。

UTF-8和UTF-16都是可变长度编码。但是,在UTF-8中,字符可能至少占据8位,而在UTF-16中,字符长度以16位开始。

UTF-8主要优点:

  • 基本ASCII字符(例如数字,不带重音的拉丁字符等)占据一个字节,与US-ASCII表示形式相同。这样,所有US-ASCII字符串都变为有效的UTF-8,在许多情况下,它都提供了良好的向后兼容性。
  • 没有空字节,允许使用以空终止的字符串,这也引入了大量的向后兼容性。
  • UTF-8与字节顺序无关,因此您不必担心Big Endian / Little Endian问题。

UTF-8主要缺点:

  • 许多常见字符的长度不同,这会减慢按代码点编制索引的速度,并严重降低计算代码点计数的速度。
  • 即使字节顺序无关紧要,有时UTF-8仍具有BOM(字节顺序标记),用于通知文本以UTF-8编码,并且即使文本仅包含ASCII字符也破坏了与ASCII软件的兼容性。 。Microsoft软件(例如记事本)尤其喜欢将BOM添加到UTF-8。

UTF-16主要优点:

  • BMP(基本多语言平面)字符,包括拉丁语,西里尔字母,大多数中文(中华人民共和国对BMP以外的某些代码点提供了强制性支持),大多数日语可用2个字节表示。这将加快索引和计算代码点计数情况下,文中 包含增补字符。
  • 即使文本具有补充字符,它们仍将由成对的16位值表示,这意味着总长度仍可被2整除,并允许使用16位
    char
    作为字符串的原始成分。

UTF-16主要缺点:

  • US-ASCII字符串中有很多空字节,这意味着没有以空字符结尾的字符串和大量的内存浪费。
  • 在许多常见情况下(尤其是在美国/欧盟/使用西里尔字母的国家/以色列/阿拉伯国家/伊朗等),将其用作固定长度编码“通常是有效的”,通常会在不起作用的情况下导致支持中断。 这意味着程序员必须注意代理对,并在重要的情况下正确处理它们!
  • 它的长度是可变的,因此尽管计数点数或索引点数比UTF-8小,但成本很高。

通常,UTF-16通常更适合于内存中表示,因为BE /
LE在那里无关紧要(仅使用本机顺序)并且索引速度更快(只是不要忘记正确处理代理对)。另一方面,UTF-8非常适合文本文件和网络协议,因为它不存在BE /
LE问题,并且空位终止和ASCII兼容性通常很方便。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437466.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号