久久久精品2019免费观看_亚洲国产精品成人久久久_69国产成人综合久久精品91_国产精品久久精品视

Python Unicode的IO問(wèn)題

在歷史的長(zhǎng)河里,產(chǎn)生了媛媛不止我們前面提到的那些編碼方式,還有很多。

對(duì)于我們中國(guó)來(lái)說(shuō),在GBK之前還有GB2312,它是對(duì)ASCII碼表的中文擴(kuò)展,當(dāng)時(shí)咱們還沒(méi)那么富裕,三個(gè)字節(jié)對(duì)我們來(lái)說(shuō)太奢侈了,所以GB2312只是用兩個(gè)字節(jié),給常用的漢字進(jìn)行了編碼。

緊接著臺(tái)灣的同胞一看,這明顯是不讓我們寫繁體字了,于是他們也自己弄了一個(gè)繁體字編碼,叫大五碼(Big-5)。

然后在GBK之后,由于少數(shù)民族也需要用電腦了,于是又?jǐn)U展成了GB18030,還有當(dāng)時(shí)很多沒(méi)有流行起來(lái)的編碼方式,我就不一一贅述了。

現(xiàn)在只是我們國(guó)家都有那么多種編碼標(biāo)準(zhǔn),更不用說(shuō)其他國(guó)家了。

這就是我們經(jīng)常遇到亂碼問(wèn)題的原因。

因?yàn)槟愦蜷_(kāi)的方式不對(duì),你用什么方式保存的文件,打開(kāi)的時(shí)候,就要按對(duì)應(yīng)的編碼來(lái)反解成Unicode才會(huì)正常顯示,不然就會(huì)是一團(tuán)亂碼。

現(xiàn)在內(nèi)存里固定都是Unicode,我們是沒(méi)辦法選擇的,但是我們往硬盤里存數(shù)據(jù)的時(shí)候,是可以選擇存GBK或者其他編碼的。

但是如果我們現(xiàn)在存文件,還是指定GBK或者其他老的編碼方式來(lái)存的話,這就是一種圖步,我們不應(yīng)該這么做,理論上來(lái)說(shuō),我們應(yīng)該直接把Unicode格式的二進(jìn)制數(shù)據(jù)存到硬盤。

為什么說(shuō)是理論上呢?

因?yàn)閁nicode簡(jiǎn)單粗暴,都是用兩個(gè)字節(jié)來(lái)表示一個(gè)字符,個(gè)別生僻的字符會(huì)用更多,如果我這個(gè)文件里就是包含了各個(gè)國(guó)家的字符,那這樣就沒(méi)問(wèn)題。

但是如果我這個(gè)文件99%都是英文的話,這個(gè)Unicode會(huì)有什么問(wèn)題呢?是不是會(huì)多占一倍的空間?。”緛?lái)我八位就足夠了,你要給我用16位。

但是這個(gè)浪費(fèi)空間的問(wèn)題不是致命的,現(xiàn)在的存儲(chǔ)越來(lái)越便宜了,真正致命的是IO問(wèn)題。

我們現(xiàn)在來(lái)想,到底是讀寫100兆的文件IO次數(shù)多,還是讀寫50兆的文件IO次數(shù)多呢?

所以真正影響這個(gè)問(wèn)題是IO增多的問(wèn)題。

這個(gè)IO問(wèn)題我們之前最開(kāi)始 的時(shí)候也提過(guò),后面我會(huì)專門開(kāi)兩篇溫江講硬盤的IO操作,這里就不多介紹了。

所以本著這個(gè)原則,我們應(yīng)該將Unicode,在原有的基礎(chǔ)上進(jìn)行精簡(jiǎn),這時(shí)候有同學(xué)就會(huì)問(wèn),為什么不能一開(kāi)始設(shè)計(jì)Unicode的時(shí)候就設(shè)計(jì)的精簡(jiǎn)一點(diǎn)呢?

那就反過(guò)來(lái)問(wèn),當(dāng)初設(shè)計(jì)計(jì)算機(jī)的時(shí)候,就不用ASCII碼表,不用GBK,而是直接用最完美的字符編碼表,不就好了嗎?

歷史是一點(diǎn)點(diǎn)發(fā)展的,科技也是一點(diǎn)點(diǎn)的發(fā)展的,不會(huì)存在一下子的大爆發(fā),所以不要用現(xiàn)在的眼光去判斷歷史發(fā)展的問(wèn)題。

只能發(fā)現(xiàn)問(wèn)題,然后解決問(wèn)題。

未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » Python Unicode的IO問(wèn)題

贊 (0) 打賞

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

微信掃一掃打賞