python實訓 以python為例的編碼方式

2021-10-14 23:12:00 字數 2765 閱讀 4891

我們看到的資訊,例如,乙個文字「中」,儲存到電腦中:二進位制 => 物理。編碼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方法

#jbk編碼乙個漢字佔兩個位元組,utf8乙個漢字佔三個位元組,對於中文,jbk比 utf8節省三分之一的空間

print

("中"

.encode(encoding=

'gbk'))

print

("中"

.encode(encoding=

'utf-8'))

b'\xd6\xd0'

.decode(encoding=

'gbk'

)#'中'

b'\xd6\xd0'

.decode(encoding=

'utf-8'

)#編碼與解碼方式不一致,會報錯

場景:1.字串方式傳播 2.簡單加密 3.伺服器相容性

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自動轉換了

print

('我的綠色軟體是:'

,content)

print

('我的綠色軟體是:'

##文字/ 編碼-> 二進位制 ->base64 改變後的二進位制 -> ascii解碼成基本字元 逆轉過來

str1 =

'mtm3mjuxmdc4njq='

str2 =

't2jpzhp1cnu='

b64_bytes = str1.encode(encoding=

'ascii'

)print

(b64_bytes)

raw_bytes = base64.b64decode(b64_bytes)

print

(raw_bytes)

raw_str = raw_bytes.decode(encoding=

'utf-8'

)print

(raw_str)

print

(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是怎麼回事,當你發出乙個網路請求的時候,都發生了什麼?當你需要登入的時...