字符编码、python2和python3编码的区别
目錄
- 字符編碼
- 文本編輯器存儲(chǔ)信息的過程
- python解釋器解釋python代碼的流程
- python解釋器與文本編輯器的異同
- 不同編碼格式存入與讀取數(shù)據(jù)的過程
- 亂碼的分析
- python2和python3字符編碼的區(qū)別
- python2
- python3
字符編碼
文本編輯器存儲(chǔ)信息的過程
- 打開編輯器就在內(nèi)存中打開了一個(gè)進(jìn)程,用編輯器編寫的內(nèi)容存在內(nèi)存中,斷電會(huì)丟失。
- 點(diǎn)擊保存,編輯器把內(nèi)存的數(shù)據(jù)刷到了硬盤上。
- 編寫.py文件(沒有執(zhí)行時(shí))和編寫其他文件沒有區(qū)別,只是在寫一堆字符。
python解釋器解釋python代碼的流程
- 第一階段:python解釋器啟動(dòng),這時(shí)相當(dāng)于啟動(dòng)了一個(gè)文本編輯器。
- 第二階段:python解釋器相當(dāng)于文本編輯器,打開test.py文件,從硬盤將test.py文件從硬盤讀入到內(nèi)存中(python的解釋性決定了解釋器只關(guān)心文件的內(nèi)容,不關(guān)心文件的后綴)。
- 第三階段:python解釋器解釋執(zhí)行加載到內(nèi)存中的test.py代碼。在該階段才會(huì)識(shí)別python語法,為變量值等開辟存儲(chǔ)空間。
python解釋器與文本編輯器的異同
- 相同點(diǎn):python具備讀取.py文件的功能,這與文本編輯器一樣。
- 不同點(diǎn):讀取文件之后兩者的目的不同,文本編輯器將文件讀入內(nèi)存后為了顯示和編輯,python解釋器是為了執(zhí)行Python代碼,所以會(huì)識(shí)別代碼的語法。
不同編碼格式存入與讀取數(shù)據(jù)的過程
utf-8編碼格式只能和Unicode格式相互轉(zhuǎn)換,不能和其他編碼格式轉(zhuǎn)化
亂碼的分析
存文件是亂碼
用中文的編碼格式存儲(chǔ)日文等其他國(guó)家的文字則會(huì)導(dǎo)致存入的二進(jìn)制位并不對(duì)應(yīng)要存的語言的字符,從而導(dǎo)致存入時(shí)就會(huì)出現(xiàn)亂碼。
讀文件時(shí)亂碼
讀文件時(shí)如果讀取采用的編碼格式與文本原來的編碼格式不同則會(huì)導(dǎo)致出現(xiàn)亂碼,如用gbk讀取ASCII編碼的文件
總結(jié)
要想不出現(xiàn)亂碼,文件中的字符按什么標(biāo)準(zhǔn)編碼,就用什么標(biāo)準(zhǔn)去讀取文件(解碼)。由于內(nèi)存中固定使用Unicode編碼,我們只能改變存儲(chǔ)到硬盤時(shí)使用的編碼格式。
python2和python3字符編碼的區(qū)別
python2
python2有兩種存儲(chǔ)形式,第一種:Unicode;第二種:按coding頭選擇存儲(chǔ)格式,假設(shè)python2用utf8存儲(chǔ)x='中文',當(dāng)你print(x)的時(shí)候,終端接收gbk的變量x,但是windows終端編碼是utf8,會(huì)亂碼。
python3
python3只有Unicode一種存儲(chǔ)變量的形式。Python2中默認(rèn)使用ascii,Python3中默認(rèn)使用utf-8,文本編輯器編寫的文件默認(rèn)為gbk編碼格式。
總結(jié)
以上是生活随笔為你收集整理的字符编码、python2和python3编码的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL中那么多函数,Java8为什么还要
- 下一篇: python之optparse