bytes的轉換


無論是gbk/utf-8,它們都只是一種編碼規則,一種把Unicode數據編碼成字節數據的規則

內存中是Unicode編碼的
open()編碼方式默認是操作系統的

Python3.x,默認編碼、編碼方式均為 encoding=”utf-8

py2默認ASCII

內存中                            編碼                    存到硬盤
字符串(Unicode)-----------encode----------->二進制bytes

硬盤                        解碼                     讀取到內存
二進制bytes---------decode-------------->字符串(Unicode)

1.在文本編輯器(如word/txt/Sublime text3/IDEL/各種解釋器等等)編輯文字(中文/英文)時,計算機是
不認識這些的。在我們保存這份文件數據之前,數據是以Unicode形式存在內存中的。
2.保存了的存到磁盤上的數據 是通過某種編碼方式(如utf-8/gbk等)進行編碼(encode) 過的bytes字節串。
(在保存操作時編輯軟件默默地作了編碼工作,有它們默認保存文件的編碼方式)
3.再次打開文件 時,軟件又默默地(從磁盤)做了解碼(decode)工作,即將數據從byte解碼成Unicode(到內
存)。然后以明文呈現給用戶。Unicode是離用戶更近的數據,byte是離計算機更近的數據

Pyhon運行.py文件過程:打開文件,解碼存磁盤的bytes數據成Unicode數據;接着,解釋器將Unicode數據翻譯
成C代碼,再轉成二進制的數據流;最后,通過控制操作系統調用CPU執行二進制數據,得出結果。整個過程結束。

 


# bytes轉字符串方式一 b=b'\xe9\x80\x86\xe7\x81\xab' string=str(b,'utf-8') print(string) # bytes轉字符串方式二 b=b'\xe9\x80\x86\xe7\x81\xab' string=b.decode() # 第一參數默認utf8,第二參數默認strict print(string) # bytes轉字符串方式三 b=b'\xe9\x80\x86\xe7\x81haha\xab' string=b.decode('utf-8','ignore') # 忽略非法字符,用strict會拋出異常 print(string) # bytes轉字符串方式四 b=b'\xe9\x80\x86\xe7\x81haha\xab' string=b.decode('utf-8','replace') # 用?取代非法字符 print(string) # 字符串轉bytes方式一 str1='逆火' b=bytes(str1, encoding='utf-8') print(b) # 字符串轉bytes方式二 b=str1.encode('utf-8') print(b)


免責聲明!

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



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