unicode、UTF-8、ASCII等编码方式的关系

今天复习一些基础的时候,又看到”编码方式“的这个名词了。
搜索了一些资料,算是搞清了ASCII、unicode、UTF-8的关系了。
1、ASCII
ASCII是很久之前美国制定的一套字符编码,是英文字符到某个id的一个映射。
这个编码方式用一个字节来表示英文字符,但字节的最高位固定为0,可用字节位数为7位。
也就是说,ASCII最多只能表示2^7 = 128个字符
2、unicode
单单ASCII肯定是不够用的,毕竟世界上有那么多国家,不同国家之间很多都使用不同的语言。
在没有unicode的时候,各个国家自己可能都有一套编码方式,这对交流带来很大的不便。
为了统一,就出现了unicode。
简单来讲, unicode的目的就是为世界上的字符制定一个从字符到独一无二的id的映射
可以从http://www.unicode.org/Public/UCD/latest/charts/这个网站下载unicode的编码表。
3、UTF-8
UTF-8是unicode的一种实现方式,实现了unicode的存储,同时与ASCII兼容。
unicode只规定了每个字符对应的id,并没有规定字符应该如何存储。
4、GB2312
兼容ASCII编码的汉字编码表,包含了常用的汉字的编码(也就是说,没有包含所有的汉字)


下面做个试验。打开记事本,分别用ASCII、unicode、UTF-8的方式保存"你a"这两个字。
用16进制方式打开,可以看到存储的字节:
ASCII: C4 E3 61
unicode:FF FE 60 4F 61 00
UTF-8:EF BB BF E4 BD A0 61


"a"的ASCII值为0x61
从unicode编码表可以查到"你"对应的值为0x4F 0x60
而从http://www.knowsky.com/resource/gb2312tbl.htm中的GB2312表中,我们可以查到"你"对应的值为0xC4 0xE3
刚好与上面贴出的存储字节相对应。


另外一点, 记事本所谓的保存方式,在我看来,是很不严谨的
unicode只是规定了字符的映射关系,并没有规定字符该如何存储,记事本里用某种实现方式来代表unicode。
ASCII也只是规定了英文字符的映射(存储)方式,并没有规定汉字该如何存储,记事本里用GB2312(也许是?)
来代表ASCII。
这些很容易给人带来误导。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值