美文网首页饥人谷技术博客
Asscll Unicode Utf-8 三者之间有啥联系

Asscll Unicode Utf-8 三者之间有啥联系

作者: 没梦想的咸鱼丶 | 来源:发表于2016-09-27 15:27 被阅读0次

    1. Asscll

    • 1946年计算机在美国发明,众所周知计算内部储存信息都是以二进制形式存在的(0和1)。二进制最小数据单位是位(bit),8个位也就是一个字节(Byte),1一个字节就是2^8=256,有256种不同的可能, 英文字母加上一些特殊符号在一个字节中来表示肯定没问题,所以 Asscll码就制定128个字符的编码。

    2. Unicode

    • 随计算机的普及,开始的Asscll码肯定满足不了大家的需求,毕竟不是所有人都是使用英文为母语,特别是汉语,所以这个时候Unicode就出现了,和名字意思一样,意思是包含了所有的字符编码。

    • unicode虽然包括所以的编码,但是在计算机中储存和读取却是有问题的,Asscll一个字节就可以表示,但是Unicode后面的编码数值都比较大,早就超过了一个字节,在读取和存储的时候,计算根本识别不了,例如“”字的二进制编码是 100111000010000 ,有足足15位,计算机无法区分这个到底是按asscll还是按unicode的方式来读取,即使unicode明确规定字符都是按三位或者更多的四位来读取,但是asscll码只需要一位就可以表示,强行在前面加上0会加大文件的大小,明显太浪费存储了。

    3. Utf-8

    • 所以在正这尴尬的背景下,Utf-8就出现了,它是一种编码的方式。

    对于能用一个字节表示的Asscll,就用第1位用表示0 后7位表示编码。
    对于多字节的,这个怎么表达呢 - 。-#
    例如是n个字节,那第一个字节就写n个1,第n+1位写上0,后面的字节前两位都是以1,0开头,空余部分填上Unicode二进制编码,这样虽然是增加了几个位,但相比硬性的规定按几个字节来 其实的是省了很多空间的,而且相对也很灵活。
    以下就是具体的编码方式。

    Unicode符号范围(十六进制) | UTF-8编码方式(十六进制) | (二进制)
    --------------------+---------------------------------------------
    0000 0000-0000 007F | 0xxxxxxx
    0000 0080-0000 07FF | 110xxxxx 10xxxxxx
    0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
    0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx


    ** 本文章著作权归饥人谷_咸鱼和饥人谷所有,转载须说明来源**

    相关文章

      网友评论

        本文标题:Asscll Unicode Utf-8 三者之间有啥联系

        本文链接:https://www.haomeiwen.com/subject/wricyttx.html