一、程序執行的三大核心硬件:CPU、內存、硬盤python
二、正常執行一個程序流程:優化
一、將硬盤中數據讀取到內存編碼
二、CPU從內存中讀取數據,執行3d
三、軟件運行中產生的數據優先存到內存,若要永久保存,則需由內存寫入硬盤code
三、python解釋器執行一個py文件過程orm
一、啓動python解釋器blog
二、將py文件從硬盤讀到內存內存
三、python解釋器從內存中讀py文件utf-8
四、識別py文件中python語法,執行相應操做unicode
字符:世界上一切語言、文字
文件的輸入和輸出是兩個過程
人類輸入的內容都是人類本身能夠識別的字符,計算機只能識別0101010二進制字符
將人類的字符,存入內存和硬盤,要經歷一個過程:
***人類的字符 >>>>>>> (字符編碼表) >>>> 計算機二進制
發展史
1.一家獨大
美國,ASCII碼,一個英文對應一個bytes,一個bytes等於八個bit(二進制字節)
2.天下三分
各國擁有本身本國語言的編碼表
中國 ,GBK,一個英文對應一個bytes,一箇中文對應2個bytes
日本,shift......
三、分久必合
(萬國碼)unicode
爲了兼容全部的國家的字符,生成unicode,全部的字符都用2bytes
一、佔用存儲空間
二、io次數增長,程序運行速度變慢(最致命)
utf-8
在unicode二進制數據存入硬盤的時候,作了優化
utf-8:
utf-8只與unicode有對應關係
unicode transformation format
全部的英文字符用1個bytes表示
全部的中文字符用3個bytes表示
如今的計算機:
內存都是:unicode
硬盤都是:utf-8
內存和硬盤兼容unicode:
一、不管存入什麼字符到內存,unicode均可以兼容
二、硬盤中不管是什麼編碼文件,讀到內存中,均可以兼容unicode
數據的傳輸:
優先以本身本國的字符編碼進行傳遞
內存、硬盤的編碼轉換:
(內存)unicode二進制字符 >>> 編碼(encode) >>> (硬盤)utf-8二進制字符
(硬盤)utf-8二進制字符 >>> 解碼(decode) >>> (內存)unicode二進制字符
保證不亂碼的核心:
用什麼字符編碼存,用什麼字符編碼取
文件頭:
python2 :
默認的字符編碼ASCII碼(由於當時的unicode還沒盛行),因此pycharm寫的代碼都是utf-8的在python2中必定要寫文件頭
python3:
默認的字符編碼utf-8
pycharm默認的字符編碼是:utf-8
中文Windows系統默認的字符編碼是:GBK