怎么理解Unicode,utf-8,ASCII這些編碼?
昨天文章發(fā)出來(lái)后,有幾個(gè)讀者問(wèn)我,編碼這塊怎么掌握,感覺(jué)總是很模糊,就知道個(gè)utf-8編碼,到底如何掌握。
我其實(shí)了解也不深刻,把我知道的字符編碼主要知識(shí)點(diǎn),總結(jié)如下:
Unicode 是最常用的一個(gè)字符集,只規(guī)定字符的編碼,開(kāi)頭是'\u',如'\u4e25'對(duì)應(yīng)字符是
嚴(yán),\u005c'表示反斜杠,詳細(xì)編碼和字符對(duì)應(yīng)表可參考:https://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8ASCII編碼一共規(guī)定了128個(gè)字符的編碼,是美國(guó)人上世紀(jì)60年代制定的,記住只包括128個(gè)字符。1個(gè)字節(jié)能表示256個(gè)不同值,但只包括128個(gè),所以第一位統(tǒng)一為0,后七位用來(lái)表示字符。
另一個(gè)常識(shí):英語(yǔ)用上面ASCII編碼的128個(gè)符號(hào)編碼就夠了,但其他語(yǔ)言,128個(gè)符號(hào)是不夠的!?。?/p>
漢字多達(dá)10萬(wàn)不同字符。一個(gè)字節(jié)只能表示256種符號(hào),肯定不夠。那怎么辦?必須使用多個(gè)字節(jié)表達(dá)一個(gè)符號(hào)。
如果使用2個(gè)字節(jié)表示一個(gè)符號(hào),可能性有:
256 x 256 = 65536種上面提到Unicode只是一個(gè)字符集,不管存儲(chǔ)實(shí)現(xiàn)它們的事情。同一個(gè)字符使用不同的存儲(chǔ)方法,解析出來(lái)就會(huì)有很大問(wèn)題。所以,急需要一種統(tǒng)一的編碼方式。
UTF-8編碼被互聯(lián)網(wǎng)廣泛使用,它是Unicode字符集的一種極佳的存儲(chǔ)方法。首先它是
變長(zhǎng)度,存儲(chǔ)ASCII字符時(shí),用1個(gè)字節(jié)存儲(chǔ)它;存儲(chǔ)漢字時(shí),使用至少3個(gè)字節(jié)。這種變長(zhǎng)度存儲(chǔ),大大提高了存儲(chǔ)效率。UTF-8有一套設(shè)計(jì)精良的編碼規(guī)則,感興趣的可以去看看。
