我們看到的資訊,例如,乙個文字「中」,儲存到電腦中:二進位制 => 物理。編碼encoding:自然資訊「中」 => 二進位制 解碼decoding:二進位制 =>自然資訊「中」
ascii編碼
上個世紀,電腦剛剛產生,記憶體、硬碟非常貴。 最小資訊單位1位元組8bit位二進位制 1byte = 01010101 1000byte = 1kb 1000kb =1mb 1000mb = 1gb tb pb 『a』 → 00000001 『b』 → 00000010 『c』 → 00000011 1byte 8位,2的8次方,256種可能 把 a-z,a-z,±*()%$#,把一百多種常見的英文本母字元編進去,發明了編碼方式**[ascii]**
gbk編碼
上個世紀末,電腦開始傳入其他國家,歐洲,亞洲,中國大陸,中國台灣,日本,南韓。 ascii編碼無法表示中文 用2個位元組,2的16次方,65535種可能。 『一』 → 00000000 00000001 『中』 → 00000010 00000101 編碼常用的2w多種漢字, 中國大陸發明編碼方式[gbk2312] 更新繁體生僻字[gbk12302] ,統稱[gbk]。 問題是,中國台灣 big5, 『我』 → 00000010 00000101 日本南韓有自己的編碼方式 每個國家自己一套編碼,同樣的二進位制排列,不同的解碼方式得到不同的資訊
utf8編碼
為了改變上述問題,出現乙個協會(類似ieee、iso、聯合國),把各國代表集中開會。 出現了一套大統一的編碼:[unicode] 用4個位元組,2的32次方得到乙個非常大的數字,多種可能性,所有國家語言,萬國碼 00000000 03000000 00000000 00000001 統一問題解決,但小代價,占用磁碟多,純英文資訊比ascii花費4倍空間 但unicode向下相容ascii,利用演算法可以省略不必要的字元,最終乙個字元1-4位元組
目前最流行的是[utf-8],utf-8是unicode編碼的一種具體儲存實現方式。 目前都建議使用utf-8。
亂碼是如何產生的
編碼方式和解碼方式的不同導致亂碼
首先,一定得提的是檔案在計算機的表示方式
進製表示方法
二進位制b
十六進製制
\x在python中,編碼呼叫encode方法,解碼呼叫decode方法
場景:1.字串方式傳播 2.簡單加密 3.伺服器相容性#jbk編碼乙個漢字佔兩個位元組,utf8乙個漢字佔三個位元組,對於中文,jbk比 utf8節省三分之一的空間
("中"
.encode(encoding=
'gbk'))
("中"
.encode(encoding=
'utf-8'))
b'\xd6\xd0'
.decode(encoding=
'gbk'
)#'中'
b'\xd6\xd0'
.decode(encoding=
'utf-8'
)#編碼與解碼方式不一致,會報錯
base64編碼作用的是位元組
原理:把真實資訊乙個位元組取6位前面補0,得到幾個新的位元組,比原始資訊大三分之一
base64之後只有64中可能,對應最簡單的a-z,a-z,以及數字加減號
編碼:文字/ 編碼-> 二進位制 ->base64 改變後的二進位制 -> ascii解碼成基本字元
解碼:即編碼的逆操作
import base64
str1 =
'13733177925'
content = base64.b64encode(str1.encode(encoding=
'utf-8'))
content1 = content.decode(encoding=
'ascii'
)#b'mtm3mzmxnzc5mjy=' 本該看到 pycharm自動轉換了
('我的綠色軟體是:'
,content)
('我的綠色軟體是:'
##文字/ 編碼-> 二進位制 ->base64 改變後的二進位制 -> ascii解碼成基本字元 逆轉過來
str1 =
'mtm3mjuxmdc4njq='
str2 =
't2jpzhp1cnu='
b64_bytes = str1.encode(encoding=
'ascii'
(b64_bytes)
raw_bytes = base64.b64decode(b64_bytes)
(raw_bytes)
raw_str = raw_bytes.decode(encoding=
'utf-8'
(raw_str)
(base64.b64decode(str2)
)
python實訓成果 python實訓第一天
實訓第一天總結 常量 常量也是變數,在python中大家都規定只要是大寫的變數都稱之為常量 使用者與程式互動 數字型別 整型int 浮點型 float 字串型別 列表型別 字典型別 在 內,都逗號隔開,可存放多個值,每個值以key value的形式儲存 存 dict1 取 print dict1 n...
實訓python的日記 python實訓第一天
實訓第一天總結 常量 常量也是變數,在python中大家都規定只要是大寫的變數都稱之為常量 使用者與程式互動 數字型別 整型int 浮點型float 字串型別 列表型別 字典型別 在 內,都逗號隔開,可存放多個值,每個值以key value的形式儲存 存 dict1 取 print dict1 na...
python爬蟲實訓報告 python爬蟲實習?
看到問題,挺感慨的。我是化工碩士,現在轉行在做爬蟲。基本一路都是自學,也遇到過你所說的 哭 的時候,能 哭,無非就是知識積累不夠,又無從尋找答案,那怎麼辦呢?一 補基礎咯。說到爬蟲,無非就是怎麼從網頁抓取資料,那你肯定要知道web是怎麼回事,當你發出乙個網路請求的時候,都發生了什麼?當你需要登入的時...