在浏览unicode文档时,我有时会看到UTF-16这个术语与UCS-2交替使用,UTF-32和UCS-4也是如此.我想知道UTF-8是否也有像UCS-1这样的酷昵称......
不,它们也不一样.
UCS-2是ISO 10646的过时编码(目前这个标准几乎是Unicode,但没有关于如何处理字符的一些规则)和每个字符2个八位字节(8位字节)的Unicode版本1.在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定义为32位编码,每个字符使用4个八位字节,理论上能够支持高达U + 7FFFFFFF的代码点(最高位永远不会被设置为1以避免混淆,支持对于无符号的32位值并不是很好).ISO已经声明ISO 10646永远不会为Unicode分配不同的代码点,因此永远不会超过U + 10FFFF.
Unicode联盟定义的UTF-32与UCS-4的定义方式大致相同,只是它从一开始就具有U + 10FFFF的规定限制.因此,尽管两者在理论(但未使用)限制方面曾有所不同,但它们现在是相同的.但是因为它们曾经是不同的,所以说它们是同一个东西的不同名称并不完全正确.(他们更像是同卵双胞胎而不是有两个名字的人).
UTF-8每个字符使用1,2,3或4个八位字节,具体取决于代码点.它是在ISO 10646和Unicode在最大可能代码点上有所不同的时候开发的,并且可以与两者一起使用,同时保持向后兼容ASCII/ISO 646的8位编码.因此它最初也可以有5或6八位字节支持ISO 10646支持的U + 110000到U + 7FFFFFFF范围,但Unicode没有.由于U + 10FFFF现在是两者的最大值,因此不再允许这些5和6个八位字节组合.
在UTF-8是UTF-8之前,它是X/Open的FSS-UTF("文件系统安全UCS转换格式"),所以如果你认为FSS-UTF"很酷",那就是"一个很酷的昵称".
归档时间: |
|
查看次数: |
111 次 |
最近记录: |