正確理解計算機編碼

2022-02-26 07:19:47 字數 1331 閱讀 1949

編碼是什麼?

由於計算機只能識別'0101'這樣的二進位制,所以需要一種機制將人類使用的文字轉化為二進位制被計算機識別。

這個機制就是編碼

換句話說,其實我們肉眼看到的文字從來就沒有真正存在過,都是一堆一堆的編碼存在的。包括存在在硬碟上的**也是一堆0101的編碼

記憶體與硬碟的編碼有什麼不同?

記憶體中統一採用unicode,因為unicode是全語言碼,通過犧牲空間為代價來換取可以轉換成任意編碼(不亂碼),

硬碟採用各種編碼,一般為utf-8和gbk,不用unicode那是因為使用unicode表示英文時過於浪費空間。

注意:軟體**是存放於硬碟的,而執行軟體是要將軟體載入到記憶體的。由硬碟編碼轉換為unicode

還有:雖說現在正常的電腦記憶體都是unicode編碼,但是還是存在很多地方或系統、應用軟體仍然會採用各種各樣的編碼,這是歷史遺留問題。

gbk編碼是如何做到儲存中英文的?

gbk存英文1個byte,存中文2個byte

gbk會在每個bytes,即8位bit的第乙個位作為標誌位,標誌位為1則表示是中文字元,如果標誌位為0則表示為英文本元

python的預設編碼是什麼?

#coding:utf-8,來決定以什麼編碼格式來讀入記憶體。換句話說,也決定了以什麼編碼格式存入硬碟

python2中預設使用ascii,python3中預設使用utf-8

額外知識:python的字串編碼為什麼經常出問題?

因為python在**方面都是英文,所以不管是ascii編碼還是utf8都可以處理,不需要考慮。

但唯有字串可能出現中文,總所周知ascii是不能處理中文的

python執行時是如何處理字串的?

python中有兩類字串,unicode和str

但是python3中將str直接存成unicode,我們定義乙個str,無需加u字首,就是乙個unicode

注意:unicode型別只能encode,不能decode

在python2中的執行流程

當python直譯器執行到產生字串的**時(例如x='上'),會申請新的記憶體位址,然後將'上'編碼成檔案開頭指定的編碼格式存放到該記憶體空間中。

當python直譯器執行到產生字串的**時(例如s=u'林'),會申請新的記憶體位址,然後將'林'以unicode的格式存放到新的記憶體空間中,

正確理解 clear both

要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳細分析...

正確理解 clear both

原文 要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳...

正確理解 clear both

要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳細分析...