gpt4 book ai didi

unicode - UTF-8 是否有 UCS 同义词,例如 UTF-16 是 UCS-2 而 UTF-32 是 UCS-4?

转载 作者:行者123 更新时间:2023-12-05 08:54:51 24 4
gpt4 key购买 nike

在浏览 unicode 文档时,我有时会看到术语 UTF-16 可与 UCS-2 互换使用,也可与 UTF-32 和 UCS-4 互换使用。我想知道 UTF-8 是否也有一个很酷的昵称,比如 UCS-1 之类的……

最佳答案

没有。它们也不完全相同。

UCS-2 是 ISO 10646 的过时编码(如今该标准几乎是 Unicode,但没有关于如何处理字符的一些规则)和 Unicode 版本 1,每个 2 个八位字节(8 位字节)特点。在 1996 年之前允许它编码所有通用字符集(因此 UCS),但它不适用于所有 Unicode 版本 2 或更高版本(我们目前使用的是版本 10)。

UTF-16 使用 2 个八位字节组来编码字符或成对的代理项(因此总共 4 个八位字节)来编码 U+10000 及更高。它向后兼容 UCS-2,因此任何可以处理 UTF-16 的东西都会将 UCS-2 理解为有效的 UTF-16,但是期望 UCS-2 的旧软件会将代理项视为普通字符(它不会理解,因为相关代码点未分配给 Unicode 版本 1 中的任何内容)。

UCS-4 最初由 ISO 10646 定义为每个字符使用 4 个八位字节的 32 位编码,理论上能够支持高达 U+7FFFFFFF 的代码点(最高位永远不会设置为 1 以避免对无符号 32 位值的支持不是很好的混淆)。 ISO 此后声明 ISO 10646 永远不会为 Unicode 分配不同的代码点,因此永远不会高于 U+10FFFF。

UTF-32 由 Unicode 联盟定义,与 UCS-4 的定义方式大致相同,只是它从一开始就规定了 U+10FFFF 的限制。因此,虽然这两者在理论上(但未使用)的限制曾经有所不同,但现在它们是一样的。但是因为它们曾经是不同的,所以说它们是同一事物的不同名称并不完全正确。 (他们更像是同卵双胞胎,而不是有两个名字的人)。

UTF-8 每个字符使用 1、2、3 或 4 个八位字节,具体取决于代码点。它是在 ISO 10646 和 Unicode 在最大可能代码点上有所不同并打算与其中任何一个一起使用时开发的,同时保持向后兼容 ASCII/ISO 646 的 8 位编码。因此它最初也可以有 5 或 6八位字节支持 ISO 10646 支持但 Unicode 不支持的 U+110000 到 U+7FFFFFFF 范围。由于 U+10FFFF 现在是两者的最大值,因此它不再允许使用 5 和 6 个八位字节组合。

在 UTF-8 成为 UTF-8 之前,它是 X/Open 的 FSS-UTF(“文件系统安全 UCS 转换格式”),所以如果您认为 FSS-UTF“很酷”,那么这是一个“很酷的昵称” .

关于unicode - UTF-8 是否有 UCS 同义词,例如 UTF-16 是 UCS-2 而 UTF-32 是 UCS-4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48236286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com