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