unicode与utf-8

unicode

计算机最底层只能表示0和1,为了让除了0和1的其他字符在计算机中表示,所以制作了字符集来用0和1表示其他字符,字符集中通过0和1的不同组合来表示表中对应的字符

最早的编码集---ASCII编码(American Standard Code for Information Interchange,美国信息交换标准代码)是一种基于拉丁字母的字符编码系统,它主要用于电子通信。ASCII编码表包含了128个或256个字符,这些字符包括了大小写英文字母、数字0到9、标点符号、特殊符号以及控制字符

西方国家创建了ASCII编码,都知道的西方字符比较少所以256个位置足够用了,后面其他国家开始用的时候就完全不够用了,就像中国就有几万个,所以编码集就开始不断优化,比如后来的gb2312,GBK1.0等编码集可存储字符数量不断变多,发展到现在最完善的字符集就是unicode

定义

Unicode(统一码、万国码、单一码)是一个国际标准字符集,它为每种语言中的每个字符设定了统一且唯一的二进制编码,以满足跨语言、跨平台进行文本转换和处理的需求。

起源与发展

Unicode编码的历史可以追溯到20世纪60年代,当时计算机科学家们意识到不同计算机系统使用不同的字符编码方式,导致文本和数据在不同系统间传输时出现混乱和错误。为解决这一问题,国际组织开始致力于制定统一的字符编码标准。1987年,Unicode联盟成立,开始制定Unicode编码标准。Unicode标准于1990年开始研发,1994年正式公布

特点

  • 统一性Unicode为世界上几乎所有的字符集和符号提供了唯一的数字标识符,确保了字符在不同计算机系统和编程环境中的一致性和互操作性。
  • 扩展性Unicode编码体系庞大,能够容纳超过110万个码位,涵盖了全球范围内的绝大多数语言字符,为未来的字符扩展提供了充足的空间。
  • 兼容性Unicode与多种传统字符编码方案(如ISO 8859GB2312等)保持兼容,使得旧有编码方式可以平滑过渡到Unicode编码。

UnicodeUTF-8的关系

联系

Unicode是一个字符集,它定义了世界上所有字符的编码。而UTF-8是一种字符编码方式,用于将Unicode字符编码为字节序列,以便在计算机中存储和传输。

UTF-8是实现Unicode编码的一种具体方式。Unicode定义了字符的编码,而UTF-8定义了如何将这些编码转换为字节序列。

字符表示长度Unicode编码通常使用固定长度的字符表示(尽管实际上存在多种Unicode编码方式,如UTF-16UTF-32等,它们分别使用16位和32位来表示一个字符,但在此处我们主要讨论的是Unicode字符集本身与UTF-8的对比),而UTF-8则使用可变长度的字节序列来表示字符。

兼容性UTF-8编码可以兼容ASCII编码,而Unicode编码(作为字符集本身)并不直接涉及与ASCII编码的兼容性。不过,当Unicode字符通过UTF-8等编码方式表示时,可以实现对ASCII编码的兼容。

UnicodeUTF-8在字符编码领域各自扮演着重要的角色。Unicode作为字符集提供了统一的字符编码标准,而UTF-8作为Unicode的一种实现方式,则以其高效性和兼容性成为了互联网上最流行的字符编码方式之一。

ASCII用8位一个字节byte代表一个字符,unicode不可变长度固定为2个bytes,这样对于英文来说是浪费

基于unicode的utf-8变为可变长度,英文还是ASCII码的一个byte,中文3个bytes,中文在代码中很少使用,基本都是英文所以可以节省很多空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值