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,与网上查到的值吻合:
如有不准确的地方烦请指正,共同学习共同进步