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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

编码(decode与encode)

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

目錄

    • 1. 什么是編碼
    • 2. 編碼方式屬性
    • 3. decode與encode

1. 什么是編碼

事實(shí)上計(jì)算機(jī)只認(rèn)0或1,然而卻可以通過計(jì)算機(jī)來顯示文本,這就是靠編碼來實(shí)現(xiàn)的。
編碼其實(shí)就是約定的一個(gè)協(xié)議,比如ASII編碼約定了大寫字母A對(duì)應(yīng)十進(jìn)制65,那么在讀取一個(gè)字符串的時(shí)候,看到65,計(jì)算機(jī)就知道這是大寫字母A的意思

由于計(jì)算機(jī)是美國(guó)發(fā)明的,所以這個(gè)ASCII編碼設(shè)計(jì)時(shí)只采用1個(gè)字節(jié)存儲(chǔ),包含了大小寫英文字母、數(shù)字和一些符號(hào)。但是計(jì)算機(jī)在全世界普及之后,ASCII編碼就成了一個(gè)瓶頸,因?yàn)?個(gè)字節(jié)是完全不足以表示各國(guó)語言的

大家知道英文只用26個(gè)字母就可以組成不同的單詞,而漢字光長(zhǎng)用字就有好幾千個(gè),至少需要2個(gè)字節(jié)才足以存放,所以后來中國(guó)制定了GB2312,用于對(duì)漢字進(jìn)行編碼
然后的然后日本,韓國(guó)也制定了各自的編碼,然后就出現(xiàn)沖突了,就導(dǎo)致了最初計(jì)算機(jī)上總是容易看到亂碼的現(xiàn)象

為了解決這個(gè)問題,Unicode編碼應(yīng)運(yùn)而生。Unicode組織的想法最初也很簡(jiǎn)單,創(chuàng)建一個(gè)足夠大的編碼,將所有國(guó)家的編碼都加進(jìn)來,進(jìn)行統(tǒng)一標(biāo)準(zhǔn)。
隨著問題的解決,新的問題也出現(xiàn)了,如果你寫的文本只包含英文和數(shù)字,那么用Unicode編碼就顯得特別浪費(fèi)存儲(chǔ)空間(使用ASCII編碼只占用一半的存儲(chǔ)空間),所以本著能省一點(diǎn)是一點(diǎn)的精神,Unicode還創(chuàng)造了多種實(shí)現(xiàn)方式
比如常見的UTF-8編碼就是Unicode的一種實(shí)現(xiàn)方式,它是可變長(zhǎng)編碼。
簡(jiǎn)單來說就是,當(dāng)文本是ASCII編碼的字符時(shí),它用1個(gè)字節(jié)存放;而當(dāng)文本是其他Unicode字符的情況,它將按一定的算法轉(zhuǎn)換,每個(gè)字符使用1~3個(gè)字節(jié)存放。

2. 編碼方式屬性

GB2312UTF-8Unicode
GB2312編碼專門用來解決中文編碼的,是雙字節(jié)的,并且不論中英文都是雙字節(jié)的;包含全部中文字符;總的來說GB2312編碼方式的編碼是以中國(guó)國(guó)情而創(chuàng)造的,在國(guó)際上的兼容性不好。UTF-8 編碼是Unicode的一種實(shí)現(xiàn)方式,因?yàn)閷?duì)于大多數(shù)語言,只需要一個(gè)字節(jié)就能夠編碼,如果都采用Unicode會(huì)極大浪費(fèi),于是出現(xiàn)了可變長(zhǎng)編碼UTF-8。它對(duì)英文使用8位(即一個(gè)字節(jié)),中文使用24位(三個(gè)字節(jié))來編碼。另外,如果是外國(guó)人訪問你的GB2312網(wǎng)頁,需要下載中文語言包支持。訪問UTF-8編碼的網(wǎng)頁則不出現(xiàn)這問題。可以直接訪問。這也是為什么大多數(shù)的網(wǎng)頁是使用UTF-8編碼而不是GB2312。目前幾乎收納了全世界大部分的字符。所有的字符都有唯一的編號(hào),這就解決了解碼的沖突!但是,unicode把大家都?xì)w納進(jìn)來,卻沒有為編碼的二進(jìn)制傳輸和二進(jìn)制解碼做出規(guī)定。

3. decode與encode

decodeencode
decode的作用是將其他編碼的字符串轉(zhuǎn)換成unicode編碼,如str1.decode(‘gb2312’),表示將gbk編碼的字符串str1轉(zhuǎn)換成unicode編碼。encode的作用是將unicode編碼轉(zhuǎn)換成其他編碼的字符串,如str2.encode(‘gb2312’),表示將unicode編碼的字符串str2轉(zhuǎn)換成gbk編碼。
  • encode:用于編碼
  • str.encode(encoding='UTF-8',errors='strict') # encoding -- 要使用的編碼,如"UTF-8" # errors -- 設(shè)置不同錯(cuò)誤的處理方案

    該方法返回編碼后的字符串

    u='我喜歡你啊!' str1=u.encode('gb2312') print(str1) # b'\xce\xd2\xcf\xb2\xbb\xb6\xc4\xe3\xb0\xa1\xa3\xa1'
  • decode:encoding 指定的編碼格式解碼字符串。默認(rèn)編碼為字符串編碼
  • str.decode(encoding='UTF-8',errors='strict') # encoding -- 要使用的編碼,如"UTF-8" # errors -- 設(shè)置不同錯(cuò)誤的處理方案

    該方法返回解碼后的字符串

    u='我喜歡你啊!' str1=u.encode('gb2312') print(str1.decode('gb2312')) # 我喜歡你啊!

    總結(jié)

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

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