unicode和ascii到底有啥联系?UTF-8又是啥龟孙玩意?

发布于 2019-01-18  107 次阅读


最近老是在一些基础概念上面迷糊

比如本篇:unicode和ascii到底有啥联系?UTF-8又是啥龟孙玩意?

还记得刚开始上计算机课的时候老师就说过:“电脑是不认识字母的? 它只认识0和1 也就是二进制”.........


现在我们可以借助python来进行更好的理解和区分这两个概念

首先介绍两个函数

chr(i, /)
Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff.

(返回整型 i 这个unicode所对应的字符)(罪恶啊,以前我误解他是返回的ascii)

ord(c, /)
Return the Unicode code point for a one-character string.

(返回c这个字符所对应的unicode)


我们知道在ascii表中,共有128位 。最大值127转换为二进制就是1111111,其中包含了英文字符和一些符号(详情https://baike.baidu.com/item/ASCII/309296)

而随着计算机的推广 ,英文不再能满足人们的需求了 ,于是就添加ascii码。。。。。最后出现了 unicode编码 ,这个是对ascii的补充 所以查看英文字符的unicode还是和ascii表相同的,但是又出现了新的问题。

因为ascii表本来只有128位,而其他的语言的unicode值远远大于128 所以转换为对应的二进制相应的位数也就高起来了 。字符和字符之间的二进制就没有办法区分了

比如123的二进制1111011有7位 而1234的二进制10011010010则有11位

于是又出现了 UTF-8 编码 他的目的就是在于 使 unicode 中大于一个字节(二进制8位以上)的字符能够更好的区分。(这里就不赘述了 参考资料:https://baike.baidu.com/item/UTF-8/481798)

在html 中可通过&#unicode码的方式直接解释为对应的字符。

例如:

不需要指定 utf-8也能正常显示

且支持16进制和10进制:

&#27014;&#26408;&#24858;&#36766;

&#x6986;&#x6728;&#x611A;&#x8F9E;

16进制仅需把开头加上x就行


总结:ascii是祖宗,unicode继承了祖宗的衣钵,且把家族发扬广大。

发扬光大以后为了更好的治理自己、也算是让人们更好的明白自己的意思,就请了一个管家兼翻译 UTF-8

 

Comments


请相信,你的指尖拥有改变世界的力量