字符編碼具體原理


字符編碼

將人類的字符編碼/轉換成計算機能識別的數字
這種轉換必須遵循一套固定的標准,該標准無非是
人類字符與數字的對應關系,稱之為字符編碼表

 

字符編碼轉換  

unicode------>encode(編碼)-------->utf-8

utf-8---------->decode--------->unicode

文件從內存刷到硬盤的操作簡稱存文件

文件從硬盤讀到內存的操作簡稱讀文件

亂碼:存文件時就已經亂碼  或者  存文件時不亂碼而讀文件時亂碼

總結:

無論是何種編輯器,要防止文件出現亂碼(請一定注意,存放一段代碼的文件也僅僅只是一個普通文件而已,此處指的是文件沒有執行前,我們打開文件時出現的亂碼)

核心法則就是,文件以什么編碼保存的,就以什么編碼方式打開

 

 

#字符編碼需要記住的概念
#01 內存中固定使用unicode編碼,我們唯一可以改變的存儲到硬盤時使用的編碼
#02 要想保證存取文件不亂亂碼,應該保證文檔當初是以什么編碼格式存的,就應該以什么編碼格式去讀取

 

#03 python3解釋器默認編碼是UTF-8
python2解釋器默認編碼是ASCII

 


在python2中有兩種字符串編碼格式
1、unicode:
x=u'上'
2、unicode編碼后的結果
x='上' #如果文件頭為coding:utf-8,那么"上"被存成utf-8格式的二進制

 

在python3只有一種字符串編碼格式:
1、unicode
x='上’

#04 編碼與解碼
unicode-------編碼encode-------->gbk
unicode<-------解碼decode--------gbk

#***
#coding:gbk
x='上’
x.decode('gbk')

#coding:gbk
x=u'上'
x.encode('gbk')
x.encode('utf-8')


#在python3中(*****)
x='上'
x只能進行編碼
x.encode('gbk')

 

總結python2與python3:
(***)
在python2中的字符串類型str都是unicode按照文件頭的指定的編碼,編碼之后的結果
在python2中也可以制造unicode編碼的字符串。需要在字符串前加u

 

(*****)
在python3中的字符串類型str都是unicode編碼的
所以python3中的字符串類型可以編碼成其他字符編碼格式,編碼的結果
是bytes類型

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM