字符集 - 编码、UNICODE - UTF的关系总结

结论:UNICODE是字符集,UTF-8、UTF-16、UFT-32是编码,编码是字符集的实现

先来解释一下字符集(character set)跟编码(encoding)的关系,做个类比:

字符集比作动物

{狮子、老虎、猴子}

编码就能比作表述这些动物的各种语言

中文编码 {狮子,老虎,猴子}

英文编码{lion,tiger,monkey}

日语编码{ライオン,トラ,サル}

当然还有泰文编码,西班牙编码等等......

字符集:顾名思义,是一个字符的集合只需要关心是里面包含了那些字符

编码:就是用计算机认识的二进制表示这个集合里面元素的方案,可以不止有一种。

按照这种思路,我们也可以自己创造一个字符集,以及设定编码。比如我要设计一个字符集,里面只包含{口,袋,妖,怪}}4个字符。那对应的编码可以设计为:

金银版编码(4位定长)
0001
0010
0100
1000

或者:

宝石版编码(不定长)
  口  0001
  袋  1000 0000
  妖  1000 0100
  怪   0111

相信大家现在明白字符集和编码的关系了。


再简单说一下UNICODE那些事。引用一下UNICODE官网对UNICODE字符集的说明:

Unicode provides a unique number for every character,
no matter what the platform,
no matter what the program,
no matter what the language.

这句话有两点地方需要注意:

  1. 3个 NO MATTER,这指出了UNICODE包含的字符之多
  2. UNICODE给每个字符分配了一个唯一的整数,这个整数的范围是0x0000~0x10FFFF。所以说UNICODE本身是编码也不是个错误的说法

UCS-2,UCS-4又是什么呢?从英文翻译可以知道,“Universal Character Set“,就是字符集,后面的数字代表每个字符的整数长度:UCS-2每个字符使用2个字节16位的整数表示,UCS-4每个字符使用4个字节32位整数表示。UCS-2是UNICODE的一个真子集,对应0x0000~0xFFFF,包含了各种语言常用的字符,熟悉WINDOWS编程API的同学都知道,宽字符其实就是UCS-2的字符,占2个字节。Windows的资料几乎把UNICODE和UCS-2说成同一样东西,说UNICODE用16位表示一个字符。

至于UTF-8、UTF-16、UFT-32这3种常见的对UNICODE的编码方式,包括定长跟不定长的方案。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值