unicode 与 utf-8

Unicode 是一种字符集,Unicode 的学名是 "Universal Multiple-Octet Coded Character Set",简称为UCS。

UCS 可以看作是 "Unicode Character Set" 的缩写。

这一标准的 2 字节形式通常称作 UCS-2。然而,受制于 2 字节数量的限制,UCS-2 只能表示最多 65536 个字符。

Unicode 的 4 字节形式被称为 UCS-4 或 UTF-32,能够定义 Unicode 的全部扩展,最多可定义 100 万个以上唯一字符。

2016-06-21 颁发的 Unicode 9.0 共收录 128,237 个字。

UCS-4 是一个更大的尚未填充完全的 31 位字符集,加上恒为 0 的首位,共需占据 32 位,即 4 字节。

理论上最多能表示 2^31 个字符,完全可以涵盖一切语言所用的符号。


------------------------------------------------------------


UTF 是 “UCS Transformation Format” 的缩写。

UCS 只是规定如何编码,并没有规定如何传输、保存这个编码。

例如“汉”字的 UCS 编码是 6C49,

我可以用 4 个ascii 数字来传输、保存这个编码;

也可以用 utf-8 编码 3 个连续的字节 E6 B1 89 来表示它。

关键在于通信双方都要认可。

UTF-8、UTF-7、UTF-16 都是被广泛接受的方案。

------------------------------------------------------------

UCS2 和 UTF16有区别

UCS2是定长的,固定2个字节,所以不能支持扩展字符,而UTF16是变长的。

------------------------------------------------------------

多字节字符集和宽字符集

1.宽字符(wide character,该字符集内每个字符使用相同的位长)Unicode规范是宽字符的规范

宽字符是宽度始终为 16 位的多语言字符代码。 字符常量的类型是 char;对于宽字符,该类型是 wchar_t。 由于宽字符始终具有固定大小,

因此使用宽字符集可以简化使用国际字符集进行的编程。

2.多字节字符(multibytecharacter,每个字符可以是一到多个字节不等,

而某个字节序列的字符值由字符串或流(stream)所在的环境背景决定)

原文地址:https://www.cnblogs.com/personnel/p/15423237.html