关于unicode与utf-8的认识

unicode起源

说到unicode就不得不说ASCII,ASCII是有美国定制的一套字符集,其中是字母与二进制的对应关系,ASCII为一个字节,一个字节中的后七位与字符一一对应,比如01000001对应大写字母A,7位二进制完全能够满足英文字符了,但是后面互联网普通,中文可不是7位二进制,128个数字能完全表示的,更别说其他国家的语言,因此出现了很多只能适用于特定语言的编码规则,比如说GB2312,BIG5等等,那这样不同国家间的沟通就变得费劲起来,于是unicode出现了,其本质也是一个字符集,里面拥有全世界语言字符对应的二进制数,比如汉字詹对应unicode:ox8a79,世界上所有的字符(当然一些太生僻的应该不会有,甲骨文应该没有吧。。。)都能在里面找到一一对应的二进制。

加深印象

不知道你有没有用过php函数ord,文档解释是说返回一个字符的ASCII码,其实这里可以理解为返回字符的编码,反过来通过这个编码也在unicode中可以找到对应的字符,比如ord(‘h’)会返回104,通过查字符集表发现104的确对应字母h,于是我继续ord
这里写图片描述

返回了232,查询232,结果是这样的

这里写图片描述

明显不对,研究了一下,原来ord函数返回字符串第一个字符,也就是第一个字节的ASCII码,因为字符‘h’本来就占一个字节,当然能正确返回,而在utf-8中,中文字大多是占3个字节的,于是可以这样

这里写图片描述

相应的返回

这里写图片描述

连接起来并转换成二进制就是

11101000 10101001 10111001

然后需要把这个转换成unicode编码,这样才能在unicode字符集中找到他对应的中文字,关于unicode与utf-8的互转这里就不多阐述,下面一张图:

这里写图片描述

互转方法可以看这里utf-8与unicode

最后得到unicode的编码为 10001010 01111001,即35449,与网上查到的值吻合:

这里写图片描述

如有不准确的地方烦请指正,共同学习共同进步

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值