計算機只認識數字。然而,我們平時在使用計算機時用的都是人類能讀懂的字元。如何能讓計算機能夠讀懂人類的字元?
字元-------------------(翻譯過程)--------------------數字
所謂字元編碼,就是乙個字元如何對應乙個特定數字的標準。字元編碼發展的三個階段:
1、ascii碼:乙個bytes代表乙個字元,1bytes=8bits,8bit可以表示0~2^8-1種變化(即可以表示256個字元)。 最初只用了後7位,已經完全能夠表示鍵盤上所有的字元了。 後來為了將拉丁文也包含進ascii表,將最高位也占用了。
2、為了滿足中文和英文,中國人制定了『gbk』。2bytes代表乙個中文字元,1bytes代表1個英文本元。 為了滿足自身的需要,各國也紛紛制定自己的編碼。
3、各國有各國的標準,就會不可避免地產生衝突,就會產生亂碼,亂碼問題的本質就是不統一。解決這個問題?
統一全世界?不現實 unicode(萬國碼)(定長) unicode統一用2個bytes代表乙個字元。 對於全篇都是英文的文字來說,unicode編碼無疑是多了一倍的儲存空間。 於是就產生了utf-8(可變長,unicode transformation formate),對英文本元只用1bytes表示,對中文字元則用3bytes表示,其他生僻字用更多的bytes去存。 目前的現狀:記憶體中的編碼固定就是unicode,唯一可變的就是硬碟上對應字元的編碼。
總結:1、 在存入磁碟時,需要將unicode轉換成一種更為精準的編碼格式:utf-8,將資料量控制到更精簡。
2、在讀入記憶體時需要將utf-8轉成unicode
字串拓展
time limit 1000ms memory limit 65536k tom有些時候為了記錄的方便,常常將一些連續的字元用擴充套件符 簡單表示。比如abcdefg可以簡寫為a g,即用起始的字元和終止字元中間加上乙個擴充套件符 來表示這個字串。但是為了處理的方便,tom又必須將這些我們簡單記法...
Python合集之Python字串編碼轉換
最早的字串編碼是美國標準資訊交換碼,即ascii碼,他僅對10個數字,26個大寫英文本母 26個小寫英文本母及一些其他符號進行了編碼。ascii碼最多只能表示256個符號,每個符號佔乙個位元組。隨著資訊科技的發展,各國文字都需要進行編碼,於是出現了gbk gb2312 utf 8編碼等。其中gbk和...
Python字串編碼
在python中有些特殊的地方是存在兩種字串,分別為str和unicode字串,他們都繼承自basestring。如 s hello world s為str us u hello world us為unicode。使用help str 和help unicode 可以檢視各自說明,他們都有decod...