日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

常用编码与为何要encode和decode

發(fā)布時(shí)間:2023/12/16 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用编码与为何要encode和decode 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

(小拓展):

(一)ASCII 碼

(二)Unicode 碼

(三)UTF-8 碼

(四)總結(jié)與encode、decode


(小拓展):

下面是每個(gè)字符對(duì)應(yīng)的編號(hào),字符0~9對(duì)應(yīng)編號(hào)48~57,就是說(shuō)ASCII碼全是字符

我們鍵盤上每個(gè)鍵都對(duì)應(yīng)一個(gè)ascii碼,這也就是為什么python中input('請(qǐng)輸入一個(gè)數(shù)')得到的是字符,我們還得把它轉(zhuǎn)換成int的原因了


(一)ASCII 碼

ASCII 碼 表示 127 個(gè)英文字符

ASCII 碼最先出現(xiàn),最初只適合英語(yǔ)

隨著計(jì)算機(jī)普及,各國(guó)家語(yǔ)言不同,文字多少更是不同,127個(gè)根本不夠用。各國(guó)都要為自己的語(yǔ)言編碼。

中國(guó)自己的編碼是gbk,每個(gè)中文需要使用兩個(gè)字節(jié)來(lái)編碼,中文編碼的規(guī)則 —— GB2312? (都是常用漢字),比如高考報(bào)名時(shí)有的學(xué)生姓名輸入是亂碼,就是因?yàn)榻逃坑玫腉B2312,而他的名字中有個(gè)太偏僻的字。


由于不同國(guó)家有不同的編碼規(guī)則,如日本,韓國(guó)都使用各自國(guó)家的編碼規(guī)則,在多語(yǔ)言
混用的場(chǎng)合會(huì)出現(xiàn)混亂。怎么解決?


(二)Unicode 碼


Unicode 用來(lái)把所有語(yǔ)言都統(tǒng)一到一套編碼里,這樣就不會(huì)再有亂碼問(wèn)題了。

Unicode通常用兩個(gè)字節(jié)編碼(有的也用四個(gè)字節(jié)),而 ASCII 碼通常用一個(gè)字節(jié)字節(jié)。ASCII 碼轉(zhuǎn)
換成 Unicode 在前面一個(gè)字節(jié)補(bǔ) 0

Unicode碼雖然全面,但是用起來(lái)笨重,比如說(shuō)我就是想傳個(gè)1到服務(wù)器,你還要給我用兩個(gè)字節(jié)編碼么?傳額外15個(gè)0?


(三)UTF-8 碼

UTF-8 把unicode進(jìn)行優(yōu)化,減小了硬盤存儲(chǔ)空間浪費(fèi)與傳輸效率低下

不過(guò)在內(nèi)存中都要轉(zhuǎn)換成unicode


UTF-8 編碼把一個(gè) Unicode 字符根據(jù)不同的數(shù)字大小編碼成 1-6 個(gè)字節(jié),常用的英文字
母被編碼成 1 個(gè)字節(jié),漢字通常是 3 個(gè)字節(jié),只有很生僻的字符才會(huì)被編碼成 4-6 個(gè)字節(jié)。


如果你要傳輸?shù)奈谋景罅坑⑽淖址?#xff0c;用 UTF-8 編碼就能節(jié)省空間。


UTF-8 的一個(gè)好處在于,原有的 ASCII 的編碼可以在 UTF-8 下繼續(xù)工作。


(四)總結(jié)與encode、decode


搞清楚了 ASCII、Unicode 和 UTF-8 的關(guān)系,我們就可以總結(jié)一下現(xiàn)在計(jì)算機(jī)系統(tǒng)通用
的字符編碼工作方式:


在計(jì)算機(jī)內(nèi)存中,統(tǒng)一使用 Unicode 編碼,當(dāng)需要保存到硬盤或者需要傳輸?shù)臅r(shí)候,
就轉(zhuǎn)換為 UTF-8 編碼。


用記事本編輯的時(shí)候,從文件讀取的 UTF-8 字符被轉(zhuǎn)換為 Unicode 字符到內(nèi)存里,編
輯完成后,保存的時(shí)候再把 Unicode 轉(zhuǎn)換為 UTF-8 保存到文件:rw-file-utf-8


瀏覽網(wǎng)頁(yè)的時(shí)候,服務(wù)器會(huì)把動(dòng)態(tài)生成的 Unicode 內(nèi)容轉(zhuǎn)換為 UTF-8 再傳輸?shù)綖g覽器:
web-utf-8
所以你看到很多網(wǎng)頁(yè)的源碼上會(huì)有類似的信息,表示該網(wǎng)頁(yè)正是用的 UTF-8 編碼。


首先要搞清楚,字符串在 Python 內(nèi)部的表示是 unicode 編碼,因此,在做編碼轉(zhuǎn)換時(shí),
通常需要以 unicode 作為中間編碼,即先將其他編碼的字符串解碼(decode)成 unicode,
再?gòu)?unicode 編碼(encode)成另一種編碼。
1.decode:其它碼-->unicode
decode 的作用是將其他編碼的字符串轉(zhuǎn)換成 unicode 編碼,如 str1.decode(‘gb2312’),表
示將 gb2312 編碼的字符串轉(zhuǎn)換成 unicode 編碼。
2.encode:unicode-->其它碼
encode 的作用是將 unicode 編碼轉(zhuǎn)換成其他編碼的字符串,如 str2.encode(‘gb2312’),表
示將 unicode 編碼的字符串轉(zhuǎn)換成 gb2312 編碼。

總結(jié)

以上是生活随笔為你收集整理的常用编码与为何要encode和decode的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。