最近想要用typedArray和sharedArrayBuffer,嗯,看完文檔發現只有int、float的array,都是給數字的,那字符串咋搞? 編碼唄。 Ascii? utf-8? 這玩意兒到底搞了啥? 不清楚啊。 因此就翻了大佬們的一些博客學習了一下。html
計算機裏全部信息都是拿二進制位來存的(0,1)。 因此1個字節就能夠存256種狀態。ASCII碼就把全部英文字符都劃分在了32-127之間的狀態裏。 好比A在ASCII裏就是65.學習
由於ASCII只規定到了127.只用了7位,因此規定第一位所有都爲0.編碼
ASCII碼解決了英文字符的問題,那其餘字符咋辦? 好比法文,希臘文? 歐洲各個國家就利用了ASCII沒有用的第一位字符,本身搞了一堆體系,而後你用你的,我用個人。 因此郵件裏會出現文案亂七八糟的狀況。code
怎麼解決呢?要解決各搞各的,那就出一套統一的咯。因此就誕生了unicode。unicode給世界上全部的符號都賦予了一個編碼。htm
那unicode是怎麼容納全部字符的呢? 答案很簡單,用更多的空間。。 比起ASCII碼只用了7位,只須要一個字節,unicode可能會佔到2個、3個、4個字節,甚至更多。blog
這麼搞老美就不幹了啊,個人英文字符一個字節就夠了,你搞一套東西出來我要用加倍的空間去存,確定不划算啊。utf-8
爲了解決上面的問題,大佬們又搞出了一套utf-8的實現。utf-8最大的特色就是,長度不固定,老美寫的英文字符,用utf-8編碼就只要1個字節,咱寫的中文字符,就要多個字節。 而後對於1個字節的符號,第一位爲0. n個字節的符號,第一個字節的前n位都爲1,n+1位爲0.後面字節的前兩位都爲10。 因此編碼的時候,看到第一位爲1的,就數數有幾個1,有幾個就佔幾個字節。ci
好比「雙」字, unicode的值爲53CC(1001001111001100),根據上面的規則,轉成utf-8就變成111010011000111110001100。unicode
嗯,這麼一搞,你們都開心了。。文檔