开发团队建议改用UTF-8

最近,《黑客新闻》上刊登了特拉维夫程序员的宣言。他们建议使UTF-8成为将文本字符串存储在内存和通讯中的默认解决方案。

该材料引起了积极的讨论,我们决定了解这种情况,考虑包括IBM工程师和W3C联盟专家在内的IT专家的观点。


照片-Raphael Schaller-不飞溅

编码情况


1988年,Joe Becker提出了Unicode标准第一稿。该文档基于16位足以存储任何字符的假设。但是,很快就知道这还不够。因此,出现了新的编码选项-包括UTF-8和UTF-16。但是格式的多样性和缺乏严格的使用建议导致IT行业(包括术语)混乱。

Windows的内部格式为UTF-16。同时,在Hacker News上讨论过的宣言的作者,微软曾一次使用Unicode和Widechar术语作为UTF-16和UCS-2的同义词(被认为是UTF-16的原始前身)。对于Linux生态系统,习惯在其中使用UTF-8。编码的多样性有时会导致在具有不同操作系统的计算机之间传输文件时文件被损坏的事实。

业界的标准化可能是解决方案-过渡到UTF-8,以便将文本字符串存储在内存或磁盘中并通过网络交换数据包。

为什么认为UTF-8比UTF-16更好


主要论点之一是UTF-8减少了拉丁字母中的字符占用的内存量(许多编程语言都使用它们)。拉丁字母,数字和通用标点使用UTF-8 编码,只有一个字节。此外,它们的代码与ASCII中的代码相对应,从而实现了向后兼容性。

另外,IBM专家,UTF-8更适合与不希望多字节数据到达的系统进行交互。其他Unicode编码包含许多空字节。实用程序可以在文件末尾找到它们。例如,在UTF-16中,字符A 如下所示:00000000 01000001。在C线中,可以修整此序列。对于UTF-8,零仅是NUL。在这种编码中,拉丁字母的第一个字母表示为01000001-意外中断没有问题。

出于同样的原因,W3C联盟的工程师建议在开发前端接口时使用UTF-8。因此,您可以避免网络设备的操作困难。


照片- 克里斯蒂安东街 - Unsplash

居民黑客新闻指出UTF-8可让您在早期阶段捕获编码错误。在其中,字节被顺序读取,并且开销位确定其编号。因此,可以毫无疑问地计算出代码点值,并且应用程序开发人员无需考虑Little-Endian或Big-Endian问题

UTF-16具有优势的地方


拉丁字母和标点符号占用的UTF-8内存较少(相比于UTF-16)。某些代码点在两种编码中需要相同数量的字节-例如,对于希腊语和希伯来语,这是事实。

亚洲字符的情况有所不同-对于UTF-8,他们需要更多空间例如,中国的字符:将用3个字节代表11101000 10101010 10011110UTF-16中的相同字符看起来像10001010 10011110

结果是什么


关于引入单一编码问题的争论已经进行了很长时间。这个问题是 11年前的Stack Overflow线程中提出的。帕维尔·拉兹维洛夫斯基(Pavel Radzivilovsky)-宣言的作者之一参加了会议。从那时起,UTF-8已经成为 Internet上最流行的编码之一。WHATWG是开发相关标准的HTML和API专家社区,在WHATWG中认为对“所有情况”都是强制性的

最近,Microsoft还开始建议在开发Web应用程序时使用UTF-8。也许将来这种做法会扩展到其他实用程序。



:

« www»: -
« IaaS»: 1cloud
: AdTech- GDPR?
10- —
,


All Articles